通常發生在先安裝opencv-contrib-python,
在接著安裝opencv-python
會發生報錯。
雖然先前也發生一樣的事情,但在換電腦後重新安裝時,也發生同樣的錯誤XD。
AttributeError: module 'cv2.dnn_superres' has no attribute 'DnnSuperResImpl_create'
以上情況通常與 OpenCV
和其額外模組的版本
不兼容或安裝不完整有關。
opencv-contrib-python
是 OpenCV 的擴展版本,包含額外的功能模組(如面部識別、SIFT/SURF 等專有演算法),而 opencv-python
只包含核心模組。
opencv-contrib-python
,然後又安裝了不同版本的 opencv-python
,這兩者之間的版本不兼容會導致功能無法正常工作。重新安裝正確版本的 opencv-contrib-python
後,會使 OpenCV 回到一個穩定的狀態。opencv-contrib-python
安裝過程可能沒有成功完成,可能是因為網絡問題或依賴關係未正確解決。重新安裝可能會解決這些問題。opencv-contrib-python
能夠清除衝突並恢復正常。除了 cv2.dnn_superres
模組,以下這些模組也可能會遇到類似的問題:
opencv-python
或 opencv-contrib-python
版本不支持,它可能會顯示沒有該模組的錯誤。opencv-contrib-python
中的一部分,版本不匹配時可能會遇到 AttributeError
。opencv-contrib-python
安裝不完整,它也可能無法使用。Aruco
標記的模組,也屬於 opencv-contrib-python
,出錯的原因可能是版本或模組不匹配。opencv-contrib-python
才能正確使用。opencv-contrib-python
,可以使用以下指令檢查版本:pip show opencv-python opencv-contrib-python
opencv-contrib-python
可能有助於解決問題:pip uninstall opencv-python opencv-contrib-python
pip install opencv-python
pip install opencv-contrib-python
pip install opencv-contrib-python==4.5.3.56
如果你確定使用正確的版本並且仍然遇到問題,請考慮升級或降級 OpenCV 的版本來解決兼容性問題。
你可以使用 pip show
指令來檢查已安裝的 OpenCV 相關套件版本:
這將會顯示以下類似的輸出:
Name: opencv-python
Version: 4.10.0.84
Summary: Wrapper package for OpenCV python bindings.
...
Name: opencv-contrib-python
Version: 4.10.0.84
Summary: Wrapper package for OpenCV python bindings with extra modules.
...
重點在於這兩個套件的版本號必須完全一致,比如上面的版本號都是 4.10.0.84
。如果 opencv-python
和 opencv-contrib-python
的版本不一致,可能會導致功能無法使用或出現錯誤。
opencv-contrib-python
就好了這是因為:
opencv-python
包含的是 OpenCV 的核心功能,例如基本的圖像處理、影像操作等。opencv-contrib-python
包含了 opencv-python
的所有核心功能 以及額外的擴展模組(contrib modules),這些擴展模組包括例如 SIFT、SURF、面部識別等功能,這些在 opencv-python
中是沒有的。因此,當你安裝了 opencv-contrib-python
時,它自帶所有的 OpenCV 核心功能和擴展模組,你不需要再單獨安裝 opencv-python
。如果你先安裝了 opencv-contrib-python
,但之後又安裝了 opencv-python
,後者可能會覆蓋前者的安裝,因為 opencv-python
會安裝較少的模組,而這樣可能會導致你原本需要的擴展功能無法使用。
opencv-contrib-python
就夠了?opencv-contrib-python
包含了所有 opencv-python
的核心模組功能,並且額外包含了來自 contrib
的擴展模組。opencv-python
可能會覆蓋掉 opencv-contrib-python
中的某些擴展模組,從而導致你無法使用特定的功能,像你提到的 cv2.dnn_superres
就屬於 contrib
擴展模組。opencv-contrib-python
可以避免版本不一致的問題,因為它已經包含了所有必要的模組。這樣可以減少維護和排除錯誤的麻煩。