当使用其他线程来显示图像[重复项]时,程序执行将冻结”>

问题描述 投票:0回答:1
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

除了下面的代码片段,我以相同的方式工作

def show():
    cv2.imshow('image',img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

thread = threading.Thread(target = show)
thread.start()
thread.join()

cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

但是第二个imshow语句似乎存在某种问题。我使用打印语句来发现程序在第二个imshow语句处冻结。谁能告诉我为什么会这样吗?

编辑:

我在互联网上发现了很少的类似问题,并且大多数人说cv2.imshow应该仅与主线程一起使用。我猜cv2.imshow仅适用于一个线程,无论是主线程还是您创建的任何其他线程。在任何其他线程中调用此方法将冻结执行。

下面的代码片段在另一个cv2.imshow('image',img)cv2.waitKey(0)cv2.destroyAllWindows()cv2.imshow('image',img)cv2.waitKey(0)之后显示同一图像cv2.destroyAllWindows()我除外...

python-3.x multithreading cv2 opencv-python
1个回答
0
投票

关于Open CV的官方文档:

© www.soinside.com 2019 - 2024. All rights reserved.