-27 opencv runtime_error ai_generated true

cv2.error: OpenCV(4.8.0) ../modules/highgui/src/window.cpp:376: 错误: (-27:空指针) 在函数 'cvWaitKey' 中窗口为空

cv2.error: OpenCV(4.8.0) ../modules/highgui/src/window.cpp:376: error: (-27:Null pointer) NULL window in function 'cvWaitKey'

ID: opencv/highgui-waitkey-before-imshow-crash

其他格式: JSON · Markdown 中文 · English
95%修复率
85%置信度
1证据数
2023-05-20首次发现

版本兼容性

版本状态引入弃用备注
4.5.5 active
4.6.0 active
4.7.0 active
4.8.0 active
4.9.0 active

根因分析

在 cv2.imshow() 创建窗口之前调用了 cv2.waitKey(),或者窗口在 waitKey 调用前已被销毁。

English

cv2.waitKey() is called before cv2.imshow() creates a window, or the window was destroyed before the waitKey call.

generic

官方文档

https://docs.opencv.org/4.x/d7/dfc/group__highgui.html#ga5628525ad33f52eab17feebcfc10111b

解决方案

  1. Ensure cv2.imshow() is called before cv2.waitKey(): cv2.imshow('window', image); cv2.waitKey(0); cv2.destroyAllWindows()
  2. If using a headless environment, set the OpenCV backend to headless before any GUI calls: cv2.imshow = lambda *args: None; cv2.waitKey = lambda *args: None

无效尝试

常见但无效的做法:

  1. 70% 失败

    The window must be explicitly created by imshow; sleeping does not change the order of operations.

  2. 50% 失败

    namedWindow with cv2.WINDOW_GUI_NORMAL or similar may still result in a null internal window handle on some backends.