2017-12-06 38 views
1

openCVを使用してPythonでイメージを作成しようとしています。私はリストのリストを作り、各リストは0から255までの16個の数字を持っています(16リスト)。次に、大きなリストをnumpyのndarrayで変換し、cv2.imwrite()を使用してイメージに書き込んでみます。これは私のコードです:Python-OpenCV cv2 OpenCVエラー:アサーションが失敗しました

import cv2 
import numpy as np 

colours = [] 
numbers = [] 
a=0 
for i in range(256): 
    numbers.append(a) 
    a+=1 

for x in range(16): 
    new_list = [numbers[16*x:16*x+16]] 
    colours.append(new_list) 

col = np.asarray(colours) 
new_image = cv2.imwrite("rainbow.png",col) 

最後の行まではうまくいきます。そして、それは私に、このエラーを与える:

OpenCV Error: Assertion failed (image.channels() == 1 || image.channels() == 3 || image.channels() == 4) in cv::imwrite_, file C:\projects\opencv-python\opencv\modules\imgcodecs\src\loadsave.cpp, line 600 
Traceback (most recent call last): 
    File "kormou.py", line 16, in <module> 
    new_image = cv2.imwrite("rainbow.png",col) 
cv2.error: C:\projects\opencv-python\opencv\modules\imgcodecs\src\loadsave.cpp:600: error: (-215) image.channels() == 1 || image.channels() == 3 || image.channels() == 4 in function cv::imwrite_ 

一般的で、それは私が欠けているが、私はここで同様のエラー質問を見つけることができていない非常に明白なものかもしれので、私は初心者です。

+0

imwrite関数で "image.channels()== 1 || image.channels()== 3 || image.channels()== 4"というアサーションが失敗したと言われています。では、画像には何チャンネルのチャンネルがありますか? –

+0

16チャンネルの「画像」を['imwrite']に送ります(https://docs.opencv.org/2.4/modules/highgui/doc/reading_and_writing_images_and_video.html#imwrite)。ドキュメントの状態として、それは1,3または4チャンネルのみをサポートしています。また、イメージを返さずにブール値を返すので、変数名 'new_image'はむしろ誤解を招きます。 –

答えて

0

この非常に小さな間違いがあります。次の作業コードからの抜粋 -

import cv2 
import numpy as np 

colours = [] 
numbers = [] 
a=0 
for i in range(256): 
    numbers.append(a) 
    a+=1 

for x in range(16): 
    new_list = numbers[16*x:16*x+16] 
    colours.append(new_list) 

print colours 
col = np.asarray(colours) 
new_image_flag = cv2.imwrite("rain.png",col) 

ヒントの編集を確認してください。

関連する問題