import numpy as np
import cv2
# first_method
# img = cv2.imread('sample.jpg')
# second_method
# img = np.zeros((1000, 1000, 3), np.int8)
while True:
cv2.imshow('sample', img)
if cv2.waitKey(20) & 0xFF == 27:
break
cv2.destroyAllWindows()
在上面的代码中,我试图使用opencv的imshow()函数显示图像。当我尝试使用第一种方法时,即从示例图像中创建数组时,代码可以正常工作,但是当我创建自己的数组时,出现以下错误-
PS C:\Users\tanma\Dropbox\Coding\python\AI> python .\test_1.py
Traceback (most recent call last):
File ".\test_1.py", line 16, in <module>
cv2.imshow('sample', img)
cv2.error: OpenCV(4.0.0) C:\projects\opencv-python\opencv\modules\highgui\src\window_w32.cpp:1230: error: (-215:Assertion failed) dst.data == (uchar*)dst_ptr in function 'cvShowImage'
答案 0 :(得分:2)
我在使用OpenCV 4.0.0时遇到了类似的问题。根据{{3}},该错误已在4.0.1中修复,因此您只需更新opencv-python软件包即可。
我的图片是浮点类型,但根据this,可以显示此类图片:
答案 1 :(得分:0)
您自己的数组会产生错误,因为数据类型'int8'不正确,需要更改为'uint8',即8位无符号整数。这是因为颜色由0到255之间的整数表示,并且使用有符号整数只能允许最大为127的正整数。