【发布时间】:2018-05-20 23:13:25
【问题描述】:
我正在尝试使用 openCV 在 python 中创建图像。我制作了一个列表列表,每个列表有 16 个数字,从 0 到 255(16 个列表)。然后我将大列表转换为 numpy ndarray,并尝试使用 cv2.imwrite() 将其写入图像。这是我的代码:
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_
一般来说,我是一个初学者,所以可能很明显我错过了一些东西,但我在这里找不到类似的错误问题。
【问题讨论】:
-
这是说“image.channels() == 1 || image.channels() == 3 || image.channels() == 4”的断言在imwrite函数中失败了.那么,图像有多少个通道?
-
您正在向
imwrite提供 16 通道“图像”。正如文档所述,它仅支持 1,3 或 4 个通道。此外,它不返回图像,而是返回布尔值,因此变量名称new_image具有误导性。
标签: python-3.x opencv