我的程序使用以下代码生成一系列窗口:
def display(img, name, fun):
global clicked
cv.NamedWindow(name, 1)
cv.ShowImage(name, img)
cv.SetMouseCallback(name, fun, img)
while cv.WaitKey(33) == -1:
if clicked == 1:
clicked = 0
cv.ShowImage(name, img)
cv.DestroyWindow(name)
Run Code Online (Sandbox Code Playgroud)
我在gui窗口按"q"关闭它.但是,代码继续下一次调用显示功能并显示第二个gui窗口而不关闭第一个窗口.我正在使用带有OpenCV 2.1的Mac,在终端中运行该程序.我该怎么关闭gui窗户?谢谢.
我正在使用 OpenCV-Python 3.1 遵循以下示例代码:http : //opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_gui/py_video_display/py_video_display.html并使用 http 摄像头流而不是默认相机,当相机物理断开连接时,videocapture 中的 read 函数永远不会返回“False”(或任何与此相关的东西),从而完全挂起/冻结程序。有谁知道如何解决这一问题?
import numpy as np
import cv2
cap = cv2.VideoCapture('http://url')
ret = True
while(ret):
# Capture frame-by-frame
ret, frame = cap.read()
print(ret)
# Our operations on the frame come here
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# Display the resulting frame
cv2.imshow('frame',gray)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)