OpenCV与Qt不兼容问题

今天测试WSL2时,发现OpenCV弹窗显示图片一直会报错,所以就试着解决了一下。

报的错是:QObject::moveToThread:<XXXX> Current thread is not the object's thread <XXXX>,且是一大堆错连着。

Google了一会儿,发现很多人指出是安装的qtpy和OpenCV存在兼容性问题,只要将OpenCV Downgrade一下就好了。具体的命令是:

pip install opencv-python==4.1.2.30

这个版本是确认可用的,你也可以试试其附近的版本。

我用的测试代码:

1
2
3
4
5
6
7
8
9
import cv2
import qtpy

print(cv2.__version__)
print(qtpy.__version__)
img=cv2.imread('~/workdir/output.png')
cv2.imshow('test', img)
cv2.waitKey(1)
cv2.destroyAllWindows()

如果跑完不报错,问题就解决了。