【问题标题】:python 3.6.1 opencv 3.3.1 cv2.imshow() not displaying imagepython 3.6.1 opencv 3.3.1 cv2.imshow() 不显示图像
【发布时间】:2017-10-29 17:24:24
【问题描述】:

问题:imshow() 不显示任何内容。

import cv2
import numpy as np

img_rgb = cv2.imread('opencv-template-matching-python-tutorial.jpg')
img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)

template = cv2.imread('opencv-template-for-matching.jpg',0)
w, h = template.shape[::-1]

res = cv2.matchTemplate(img_gray,template,cv2.TM_CCOEFF_NORMED)
threshold = 0.8
loc = np.where( res >= threshold)

for pt in zip(*loc[::-1]):
    cv2.rectangle(img_rgb, pt, (pt[0] + w, pt[1] + h), (0,255,255), 2)

cv2.imshow('Detected',img_rgb)

另一个显示图像的示例也无法正常工作。无法退出,只显示静止画面,不显示视频。

import cv2
import numpy as np

cap = cv2.VideoCapture(0) 
cv2.startWindowThread()
while(1):
   _, frame = cap.read()
   cv2.imshow('frame',frame)
   k = cv2.waitKey(0) & 0xFF
   if k == 27:
        break

cv2.destroyAllWindows()
cap.release()

我正在使用:

  • python 3.6.1
  • opencv 3.3.1
  • Windows 10

【问题讨论】:

  • 在第一个 sn-p 中缺少 cv2.waitKey(),而在第二个 sn-p 中应该是 cv2.waitKey(1)

标签: python opencv


【解决方案1】:

你需要给windowopen的时间,以及closing的方法。

使用openCV 执行此操作的常用方法是使用.waitKey(n)。这个函数将halt programexecution 用于n milliseconds0infinite)或直到user 按下key

所以在第一个snippet中,你只需要在末尾添加以下行:

cv2.waitKey(0)


在第二个snippet,你需要更改line

k = cv2.waitKey(0) & 0xFF

k = cv2.waitKey(1) & 0xFF

这样loop 可以继续到run(因为0 一直在等待)。

【讨论】:

  • Joe Iddon,谢谢您的回复和有用的信息。
  • Joe Iddon,感谢您的回复和有用的信息。这两个例子都更实用,但不是完全固定的。第二个示例是显示预期的图像结果,但重新获得控制权的唯一方法是通过红色 X 手动关闭图像窗口。似乎没有任何键盘操作可以重新获得对 python 的控制权。第一个示例 - 视频捕获,现在确实显示实时视频,但无法在不终止命令行编辑器的情况下退出程序。再次感谢您的任何建议。
  • 尝试从第二个末尾删除&0xFF,您需要在等待键后的第一个末尾添加cv2.destroyAllWindows()(对不起,我忘记了)。然后它应该可以工作,请投票并接受它,如果你有问题,我不确定还有什么建议,因为这对我有用,而且是标准的做法......
  • Joe,感谢您对该问题的第二次剪辑。仍然没有解决,但很高兴为您投票,因为感谢您的反馈,我的状态更好。我认为我的问题可能与第 107 行 int vs float 的 flle“digits.py”有关?我打开的 CV cv2.destroyAllWindows() 和 cv2.waitKey(0) 似乎还不能正常工作。
  • 继续努力,尽管没有看到全貌,但从这个职位上没有人能做更多的事情......(顺便说一句,你没有重要的代表来投票,只有接受所以它没有' t 做任何事)希望你最终能成功!祝你好运
猜你喜欢
  • 1970-01-01
  • 2017-10-05
  • 2021-03-13
  • 2017-11-30
  • 2020-11-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-04
相关资源
最近更新 更多