2015-04-07 66 views
0

我有一個48x48的piexl值列表,我想將其寫爲灰度圖像文件。opencv:將像素寫入圖像

爲此,我將列表轉換爲numpy數組並使用imwrite。

import cv2 
from numpy import array 
...... 
#pix is a 48x48 list containing pixel values 
pix = array(pix) 
cv2.imwrite('test.jpg',pix) 

然而,返回以下錯誤

Traceback (most recent call last): 
    File "face_detect.py", line 20, in <module> 
    cv2.imwrite('test.jpg',pix) 
TypeError: img data type = 18 is not supported 

這顯然與數據類型來做些什麼,而應該imwrite的第二個參數是如果不是numpy的陣列?

+0

奇怪。這件作品'pix = [xrange(5)中x的範圍(5)]; cv2.imwrite('test.jpg',np.array(pix))' – Zero

+0

@JohnGalt在將像素值歸一化爲0〜1而不是0〜255之後,它現在可以工作,但是我得到的只是一幅黑色圖像,與數字無關... – ytrewq

+0

相對於0-255比例的0〜1值只不過是0/1值,僅爲黑色。可能用255乘以數值並寫入數組。 – Zero

回答

0

我發現問題,無論是對帖子還是我的評論下面。

我從csv文件中讀取數值時用空格分隔的值。我使用line.split()將它們分解成單獨的數字,但實際上我仍然將它們視爲字符串。

所以我只需要將它們轉換爲整數。我也不需要規範化它,0〜255是正確的。

這是我的愚蠢,但萬一有人有同樣的問題。