2013-09-08 58 views
6

Tôi không thể tìm ra cách hiển thị hình ảnh thô có chứa thông tin 640x480 pixel, mỗi pixel 8 bit. (Hình ảnh màu xám)Hiển thị hình ảnh thô Opencv Python

Tôi cần chuyển từ mảng np sang định dạng Mat để có thể hiển thị hình ảnh.

#!/usr/bin/python 
import numpy as np 
import cv2 
import sys 
# Load image as string from file/database  
fd = open('flight0000.raw') 
img_str = fd.read() 
fd.close() 

img_array = np.asarray(bytearray(img_str), dtype=np.uint8) 

img = ... Conversion to Mat graycolor 

cv2.imshow('rawgrayimage', img) 
cv2.waitKey(0) 

Rất khó hiểu với cv, cv2. Tôi đã cố gắng một thời gian, nhưng tôi không thể tìm ra giải pháp.

Trả lời

4

.RAW file không được hỗ trợ trong OpenCV see imread,

Nhưng những tập tin có thể được mở bằng Python và phân tích với numPy

import numpy as np 
fd = open('flight0000.raw', 'rb') 
rows = 480 
cols = 640 
f = np.fromfile(fd, dtype=np.uint8,count=rows*cols) 
im = f.reshape((rows, cols)) #notice row, column format 
fd.close() 

Điều này làm cho một mảng numPy có thể được thao tác trực tiếp bằng OpenCV

import cv2 
cv2.imshow('', im) 
cv2.waitKey() 
cv2.destroyAllWindows() 
+0

Lưu ý: ví dụ của tôi phân tích một hình ảnh màu xám - sửa đổi các tham số đếm và định hình lại chức năng phù hợp cho một hình ảnh màu – DanGoodrick

-3

Chỉ cần một ví dụ nếu bạn muốn lưu hình ảnh 'thô' của bạn để 'png' tập tin (mỗi điểm ảnh 32 bit, hình ảnh màu):

import numpy as np 
import matplotlib.pyplot as plt 

img = np.fromfile("yourImage.raw", dtype=np.uint32) 
print img.size #check your image size, say 1048576 
#shape it accordingly, that is, 1048576=1024*1024 
img.shape = (1024, 1024) 

plt.imshow(img) 
plt.savefig("yourNewImage.png") 
0
#!/usr/bin/python 
#code to display a picture in a window using cv2 
import cv2 

cv2.namedWindow('picture',cv2.WINDOW_AUTOSIZE) 
frame=cv2.imread("abc.jpg") 
cv2.imshow('picture',frame) 
if cv2.waitKey(0) == 27: 
     cv2.destroyAllWindows() 
Các vấn đề liên quan