OpenCV(4.2.0) error: (-215:Assertion failed) size.width>0 && size.height>0 in function 'cv::imshow'

OpenCV(4.2.0) error: (-215:Assertion failed) size.width>0 && size.height>0 in function 'cv::imshow'

我一直收到这个错误。我已经从 This website 复制了代码并进行了更改,以便代码真正起作用。代码:

ap = argparse.ArgumentParser()
ap.add_argument("-i", "--image", help="Image Path")
args = vars(ap.parse_args())
img_path = args['image']

#Reading image with opencv
img = cv2.imread(img_path)

#Reading csv file with pandas and giving names to each column
index=["color","color_name","hex","R","G","B"]

csv = pd.read_csv('colors.csv', names=index, header=None)
cv2.namedWindow('image')
cv2.setMouseCallback('image', draw_function)

while(1): 
    #This is error line
    cv2.imshow("image",img)
    [...]

完整的追溯:

Traceback (most recent call last):
  File "C:\Users\someone\Documents\python\____The Useless Installer____\PY\color_detection.py", line 39, in <module>
    cv2.imshow("image",img)
cv2.error: OpenCV(4.2.0) C:\projects\opencv-python\opencv\modules\highgui\src\window.cpp:376: error: (-215:Assertion failed) size.width>0 && size.height>0 in function 'cv::imshow'

我看过 here and here 但我不明白如何解决这个问题,而且我认为它也与我的问题关系不大。如果这是显而易见的,我很抱歉。我是一个完整的新手。谢谢

基本上,此错误告诉您您正在尝试显示/不存在图像。请检查:

  • 路径:我认为问题出在cv2.imread()如果路径不正确,img变量将为空

您尝试读取图像的方式几乎是正确的:

img = cv2.imread(C:\Users\someone\Documents\python\____The Useless Installer____\PY\colorpic)

应该的样子:

  • 用于转义 "\" 字符的双反斜杠,该字符在编程语言中具有特殊含义
  • 您确实需要输入图片的格式(jpegpng 等)。
  • 您需要将此参数作为 'string'"string"
  • 传递

所以试试 img = cv2.imread("C:\Users\someone\Documents\python\____The Useless Installer____\PY\colorpic.jpg")