python - 与线程一起使用时,cv2 imshow 在关闭并再次打开后不再打开窗口
问题描述
在下面的示例代码中,
import cv2
from threading import Thread
class Person_Item_Association(object):
def __init__(self):
self.stop = False
def start_camera(self):
self.stop =False
camera_thread = Thread(target=self.start_analysis)
camera_thread.start()
def stop_camera(self):
self.stop = True
def start_analysis(self):
cap = cv2.VideoCapture(0)
while not self.stop:
ret,image = cap.read()
cv2.imshow("frame",image)
cv2.waitKey(1)
cap.release()
print("resource released")
cv2.destroyAllWindows()
我执行以下顺序,调用 obj.start_camera()、obj.stop_camera()、cv2.imshow() 打开一个窗口,但是当我再次执行 obj.start_camera() 和 obj.stop_camera() 时,它不会打开一个窗口。这里有什么问题?
解决方案
您可以使用multiprocessing
模块而不是模块threading
来缓解问题。但我仍然无法找到如何解决这个问题threading
。
看看一个类似的问题。
推荐阅读
- visual-foxpro - 为什么 find 命令必须使用 '&' 运行?
- javascript - React-js 重复道具问题
- android - Nativescript android搜索栏未显示列表视图
- django - 以另一个模型/形式访问模型数据
- html - 有没有办法在 html 样式标签中使用类
- soapui - 如何将 groovy 脚本的输出传递给soap请求
- bixby - 使用词汇类型标记训练数据时出现“非法计划”消息
- python-3.x - 选择包含混合单引号和双引号的元组的查询
- javascript - 从特定的 onclick 函数获取输入参数
- html - 左对齐和居中对齐 div