【问题标题】:How to open an image with cv2 in a python module如何在 python 模块中使用 cv2 打开图像
【发布时间】:2019-11-16 23:02:11
【问题描述】:

所以这是我的代码,它工作正常,它应该显示一个图像,直到你按下一个按钮:

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 特定错误。但我不知道,为什么这不起作用。 任何帮助将不胜感激。

【问题讨论】:

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


    【解决方案1】:

    错误消息与断言失败有关:size.width&gt;0 &amp;&amp; size.height&gt;0

    这意味着函数没有执行该动作,因为某些条件不满足。

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        你的图片在

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

        但现在你正试图从

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

        因为您运行的是不同的 Python 文件。

        【讨论】:

          猜你喜欢
          • 2021-07-03
          • 1970-01-01
          • 1970-01-01
          • 2016-04-30
          • 1970-01-01
          • 2021-08-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多