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_
一般的で、それは私が欠けているが、私はここで同様のエラー質問を見つけることができていない非常に明白なものかもしれので、私は初心者です。
imwrite関数で "image.channels()== 1 || image.channels()== 3 || image.channels()== 4"というアサーションが失敗したと言われています。では、画像には何チャンネルのチャンネルがありますか? –
16チャンネルの「画像」を['imwrite']に送ります(https://docs.opencv.org/2.4/modules/highgui/doc/reading_and_writing_images_and_video.html#imwrite)。ドキュメントの状態として、それは1,3または4チャンネルのみをサポートしています。また、イメージを返さずにブール値を返すので、変数名 'new_image'はむしろ誤解を招きます。 –