cv2.error:OpenCV(4.0.0)错误:(-215:断言失败)函数“cvShowImage”中的dst.data ==(uchar *)dst_ptr

Tan*_*pta 4 python opencv image-processing python-3.x anaconda

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()
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,我尝试使用 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'
Run Code Online (Sandbox Code Playgroud)

But*_*fly 5

我在使用 OpenCV 4.0.0 时遇到了类似的问题。据此该错误已在4.0.1中修复,因此您只需更新opencv-python包即可。

我的图像是浮点类型的,但根据OpenCV 文档,可以显示这样的图像:

  • 如果图像是 8 位无符号图像,则按原样显示。
  • 如果图像是16位无符号或32位整数,则像素除以256。即,值范围[0,255*256]映射到[0,255]。
  • 如果图像是32位浮点,则像素值乘以255。即,值范围[0,1]映射到[0,255]。