How to fix "ERROR : Module 'cv2' has no attribute 'legacy' on python 3.7.9 and Windows 11"?

How to fix "ERROR : Module 'cv2' has no attribute 'legacy' on python 3.7.9 and Windows 11"?

我安装了 OpenCV 版本 4.5.2.52 以尝试对我想阅读但太模糊的图片使用超分辨率。

为此,我遵循此站点的代码:https://programmer.group/opencv-advanced-super-resolution-based-on-opencv.html

我可以复制此页面上的不同代码,我想试试这个:

import cv2
import matplotlib.pyplot as plt

# Read picture
img = cv2.imread("AI-Courses-By-OpenCV-Github.png")
img = img[5:60,700:755]
sr = cv2.dnn_superres.DnnSuperResImpl_create()
path = "ESPCN_x3.pb"
sr.readModel(path)
sr.setModel("espcn",3)
result = sr.upsample(img)

# Resize image
resized = cv2.resize(img,dsize=None,fx=3,fy=3)
plt.figure(figsize=(6,2))
plt.subplot(1,3,1)

# original image 
plt.imshow(img[:,:,::-1])
plt.subplot(1,3,2)

# SR up sampling image
plt.imshow(result[:,:,::-1])
plt.subplot(1,3,3)

## Sampling images on OpenCV
plt.imshow(resized[:,:,::-1])
plt.show()

当我 运行 它时,我收到错误“AttributeError:模块 'cv2' 没有属性 'dnn_superres'”。 所以我检查了这些页面“https://blog.csdn.net/qq_48455792/article/details/120258336”(t运行来自中文)和“https://github.com/opencv/opencv-python/issues/441 ” 上面写到,对于 4.5.x 以上的 openCV 版本,库已移至 'legacy'。

我知道我只需要将 sr = cv2.dnn_superres.DnnSuperResImpl_create() 更改为 sr = cv2.legacy.dnn_superres.DnnSuperResImpl_create() 即可。

但是有了这个改变我得到了错误 AttributeError: module 'cv2' has no attribute 'legacy'.

我在这些页面上检查了 Whosebug 错误的答案:

AttributeError: module 'cv2.cv2' has no attribute 'createLBPHFaceRecognizer'

在这两个页面上,建议安装 openCV 贡献版或安装比我现有版本 (4.4.0.46) 更旧的版本,但 none 这些对我的情况有效,所以我现在不知道怎么办。

你能帮帮我吗?

提前致谢!

不要同时安装opencv-pythonopencv-contrib-python只安装其中一个

我可以在 opencv-contrib-python 版本 4.5.5(目前最新)中访问 cv2.dnn_superres

我不再遇到这个问题,所以我将分享我为使它起作用所做的工作。

正如 Christoph Rackwitz 提到的那样 opencv-contrib-python 单独使用 4.5.5.62 版本(最新版本)就可以很好地使用函数 cv2.dnn_superres.

我个人不得不卸载所有以前与 opencv 打交道的安装:

pip uninstall opencv-python
pip uninstall opencv-contrib-python
pip uninstall opencv-contrib-python-headless

然后我也删除了所有与 opencv 有关的文件:卸载后一个“cv2”文件和“opencv_contrib_python-4.5.2.52.dist-info" 仍然存在并导致错误。

删除所有这些文件后,我使用正确的版本重新安装了 opencv-contrib:

pip3 install opencv-contrib-python==4.5.5.62

它出现在Python\Lib\site-packages目录中,现在我可以正常使用cv2了。

感谢您的帮助,希望对其他人有所帮助。