Ubuntu 18.04下cv2.imshow无法正常运行问题求助
问题:Ubuntu 18.04下cv2.imshow无法打开窗口,脚本无响应
运行以下OpenCV代码时,图片窗口无法打开,脚本挂起只能手动终止且无报错;cv2.imread功能正常,能读取图片为numpy数组;重装虚拟环境、更换编辑器(PyCharm/VSCode/Jupyter)均无法解决,Jupyter内核直接崩溃:
import cv2 img = cv2.imread('images/8d47d369_2022-10-06_18-18-30_0.jpg') print(img) if img is None: raise RuntimeError('Could not read image') cv2.imshow('Original image', img) cv2.waitKey(0)
解决方案
1. 检查OpenCV GUI后端并安装缺失依赖
Ubuntu 18.04下OpenCV的GUI功能依赖GTK/Qt库,可能存在依赖缺失或后端配置问题:
- 终端运行以下命令查看OpenCV编译信息中的GUI后端:
找到python -c "import cv2; print(cv2.getBuildInformation())"GUI部分,确认是否有GTK+ 3.x或Qt启用。 - 安装必要的GUI依赖包:
sudo apt-get update && sudo apt-get install libgtk2.0-dev libgtk-3-dev libavcodec-dev libavformat-dev libswscale-dev
2. 强制指定GUI后端环境变量
Ubuntu下可能存在Qt平台插件冲突,可在代码开头添加环境变量指定后端:
import os # 强制使用xcb后端解决Qt显示问题 os.environ['QT_QPA_PLATFORM'] = 'xcb' import cv2 img = cv2.imread('images/8d47d369_2022-10-06_18-18-30_0.jpg') if img is None: raise RuntimeError('Could not read image') cv2.imshow('Original image', img) cv2.waitKey(0) cv2.destroyAllWindows() # 添加此命令确保窗口正常关闭
或者在终端运行脚本前先设置环境变量:
export QT_QPA_PLATFORM=xcb python your_script.py
3. 使用Matplotlib替代cv2.imshow
如果OpenCV的GUI功能仍无法正常工作,可改用Matplotlib显示图片(需注意颜色空间转换):
import cv2 import matplotlib.pyplot as plt img = cv2.imread('images/8d47d369_2022-10-06_18-18-30_0.jpg') if img is None: raise RuntimeError('Could not read image') # OpenCV默认读取为BGR格式,Matplotlib使用RGB格式,需转换 img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) plt.imshow(img_rgb) plt.title('Original image') plt.axis('off') # 隐藏坐标轴 plt.show()
4. 确认未安装headless版本的OpenCV
若误装了无GUI支持的opencv-python-headless,需卸载后重新安装带GUI的版本:
pip uninstall opencv-python-headless -y pip install opencv-python
内容的提问来源于stack exchange,提问作者Vlad Tkalenko
相关产品推荐
相关产品推荐

