2013-09-08 7 views
6

640x480ピクセルの情報をピクセルごとに8ビットずつ並べて表示する方法はわかりません。 (灰色の画像)Opencv Pythonで生画像を表示

画像を表示するには、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と混乱します。私はしばらくの間試していますが、私は解決策を見つけることができません。

答えて

4

.RAWファイルは、OpenCVのsee imreadでサポートされていません、

しかし、ファイルはこれが直接のOpenCVによって操作することができますnumpyの配列を作るのPythonで開くと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() 

で解析することができます

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

注:私の例では、グレースケール画像を解析 - count引数を変更し、カラー画像のためにそれに応じて機能を再構築 – DanGoodrick

-3

ただ、たとえばあなたが「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") 
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() 
関連する問題