如何在python模块中使用cv2打开图像

时间:2019-07-06 21:37:21

标签: python python-3.x opencv image-processing cv2

这是我的代码,它可以正常工作,它应该显示图像,直到您按下按钮为止。

import cv2
def open_img():
   template = cv2.imread('templates\\img_test.jpg')
   cv2.imshow('template', template)
   cv2.waitKey(0)
   cv2.destroyAllWindows()
open_img()

此脚本称为“ img_mod”,并存储在“检测”中。 现在,我想从另一个脚本调用此函数:

from detection import img_mod
img_mod.open_img()

这会产生以下错误:

Traceback (most recent call last):
  File "D:/Projects/BJ/Sandbox.py", line 3, in <module>
    img_mod.open_img()
  File "D:\Projects\BJ\detection\img_mod.py", line 6, in open_img
    cv2.imshow('template', template)
cv2.error: OpenCV(3.4.4) C:\projects\opencv-python\opencv\modules\highgui\src\window.cpp:356: error: (-215:Assertion failed) size.width>0 && size.height>0 in function 'cv::imshow'

在我看来,这似乎是cv2指定错误。但是我不知道为什么这行不通。 任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:0)

该错误消息与断言失败有关:size.width>0 && size.height>0

这意味着由于不满足某些条件,该功能未执行操作。

您的图像templates\\img_test.jpg可能无效或不存在。例如,尝试提供有效图片文件的完整路径。

答案 1 :(得分:0)

imread()无法读取图像并返回None,并且None被传递到imshow()时,就会发生这种情况。

有几种可能。最有可能的原因是您不在您认为的目录中,并且当前目录中没有templates文件夹。您可以通过将完整路径传递到img_test.jpg来解决此问题。

答案 2 :(得分:0)

您的图片在其中

D:\Projects\BJ\detection\templates\img_test.jpg

但是现在您正尝试从中加载

D:\Projects\BJ\templates\img_test.jpg

因为您运行了另一个Python文件。