之前电脑上使用pip install安装过opencv相关的python模块,不过后续学习opencv时主要使用OpenCVSharp在VS2022中创建项目测试。今天学习过程中突然想用python试试,不过运行下面代码时报错“module ‘cv2’ has no attribute 'namedWindow”。
import cv2
cv2.namedWindow('img',cv2.WINDOW_NORMAL)
img=cv2.imread('dragon.jpg')
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
百度上述错误信息,能找到很多类似的问题,大多类似module ‘cv2’ has no attribute 'XXXXXX’形式,有些说是相关函数由版权问题,建议重新安装低版本opencv的,也有些说是opencv安装有问题,需要重新安装opencv相关模块。由于namedWindow函数并无特别之处,估计是opencv安装的有问题。于是运行下面命令重新安装opencv。
pip install opencv-python
pip install opencv-contrib-python
安装过程中,命令行中一直提醒“There was an error checking the latest version of pip”,百度该错误,应该是pip模块不是最新版本,于是按照参考文献1中的解决办法,采用以下命令更新pip模块。
python -m pip install -U --force-reinstall pip
更新了pip模块,重新安装了opencv模块,再运行开头的python代码,又出现如下的报错。参考文献2中给出的解释是opencv相关的模块版本不一致,需要先卸载干净opencv相关模块,再重新安装才行。
AttributeError: partially initialized module 'cv2' has no attribute 'gapi_wip_gst_GStreamerPipeline' (most likely due to a circular import)
采用下面命令查找已安装的所有opencv模块,然后使用pip uninstall命令逐一卸载。
pip list | findstr opencv
最后运行命令重新安装opencv-python、opencv-contrib-python,再运行本文开头的python代码即可正常执行。
参考文献:
[1]https://blog.csdn.net/weixin_63294643/article/details/129212100
[2]https://blog.csdn.net/Ty_kilig/article/details/139558839