Opencv Python显示原始图像

时间:2013-09-08 10:49:29

标签: python image opencv numpy type-conversion

我无法弄清楚如何显示包含640x480像素信息的原始图像,每个像素为8位。 (灰色图像)

我需要从np数组转到Mat格式才能显示图像。

#!/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)

cv,cv2令人困惑。我现在已经尝试了一段时间,但我找不到解决方案。

3 个答案:

答案 0 :(得分:8)

。OpenCV see imread

不支持.RAW文件

但是文件可以用Python打开并用Numpy解析

pendingSaves == 0

这使得一个可以由OpenCV直接操作的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()

答案 1 :(得分: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()

答案 2 :(得分:-2)

如果您想将“原始”图像保存为“png”文件,请举例说明 (每个像素32位,彩色图像):

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")