环境:debian12/ubuntu22.04,gnome43.9
在debian/ubuntu的虚拟环境中无法正常运行cv2.namedwindow(),程序不会报错,也不会得出运行结果,而是始终保持运行的状态。
这可能是因为opencv在运行cv2.namedwindow()时需要调用系统桌面环境中的一些GUI模块,但当opencv处于虚拟环境中时不能顺利调用这些模块的而造成。
现有以下解决方法:
第一:不使用虚拟环境,在真实环境中安装并运行opencv。
第二:使用虚拟环境,但需要将opencv安装在真实环境中,并在代码中引用真实环境中的opencv,以debian12环境举例,方法如下:
1.在真实环境中安装opencv
apt install python3-opencv
2.运行python,获取opencv的安装路径
import cv2
print(cv2)
打印结果大概为
<module 'cv2' from '/usr/lib/python3/dist-packages/cv2.cpython-311-x86_64-linux-gnu.so'>
3.在基于虚拟环境的程序中引用真实环境的opencv
import os
os.path.append('/usr/lib/python3/dist-packages')
import cv2
cv2.namedWindow('image', cv2.WINDOW_NORMAL)
即可正常使用cv2.namedWindow()