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-python
和opencv-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了。
感谢您的帮助,希望对其他人有所帮助。
我安装了 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-python
和opencv-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了。
感谢您的帮助,希望对其他人有所帮助。