一、具体报错信息如下:
cv2.setWindowProperty('Station 1', cv2.WND_PROP_FULLSCREEN, cv2.WINDOW_FULLSCREEN)
cv2.error: OpenCV(4.1.2) /io/opencv/modules/highgui/src/window_QT.cpp:213: error: (-27:Null pointer) NULL guiReceiver (please create a window) in function 'cvSetModeWindow_QT'
二、针对报错信息的分析如下:
当调用 cv2.setWindowProperty 设置窗口属性时,OpenCV 需要一个已经成功创建并显示的窗口。但在某些情况下(比如窗口没有成功创建,或前一次已经销毁),调用该函数就会出现 NULL guiReceiver 错误。
这种情况通常发生在:
(1)关闭窗口后立即再次调用 setWindowProperty;
(2)多线程调用显示相关函数时未同步;
(3)cv2.namedWindow 被调用但窗口没有正常显示。
三、针对报错信息提出的解决方案如下:
方案一(继续使用原有的代码实现逻辑,添加程序保护机制):
(1)在设置窗口属性前,使用 cv2.getWindowProperty 检查窗口是否存在,避免在窗口未被正确创建时调用 setWindowProperty。
(2)添加异常捕获机制 try-except ,可避免程序因为 OpenCV 抛出异常而崩溃。
方案二(使用纯 PyQt5实现):
将原本使用 OpenCV 弹窗实现的全屏图像显示功能,改为使用纯 PyQt 实现,该方案比较适合集成到 PyQt5 的界面系统中。采用 QMainWindow + QLabel + QKeyEvent 实现纯 PyQt 版本的全屏图像显示。
2482

被折叠的 条评论
为什么被折叠?



