[OpenCV][Python]使用opencv-contrib-python報錯紀錄

更新 發佈閱讀 8 分鐘

通常發生在先安裝opencv-contrib-python,在接著安裝opencv-python會發生報錯。

雖然先前也發生一樣的事情,但在換電腦後重新安裝時,也發生同樣的錯誤XD。

raw-image

報錯訊息

AttributeError: module 'cv2.dnn_superres' has no attribute 'DnnSuperResImpl_create'

以上情況通常與 OpenCV 和其額外模組的版本不兼容或安裝不完整有關。

opencv-contrib-python 是 OpenCV 的擴展版本,包含額外的功能模組(如面部識別、SIFT/SURF 等專有演算法),而 opencv-python 只包含核心模組。


可能的原因包括:

  1. 版本不匹配:如果你安裝了某個版本的 opencv-contrib-python,然後又安裝了不同版本的 opencv-python,這兩者之間的版本不兼容會導致功能無法正常工作。重新安裝正確版本的 opencv-contrib-python 後,會使 OpenCV 回到一個穩定的狀態。
  2. 不完整的安裝:在某些情況下,opencv-contrib-python 安裝過程可能沒有成功完成,可能是因為網絡問題或依賴關係未正確解決。重新安裝可能會解決這些問題。
  3. 多次安裝衝突:如果你曾多次安裝或卸載不同版本的 OpenCV,有可能會殘留某些文件,導致模組之間的衝突。這時,重新安裝 opencv-contrib-python 能夠清除衝突並恢復正常。
  4. 環境問題:你可能有多個 Python 環境,且每個環境有不同版本的 OpenCV。在某個環境中安裝或運行時,版本的衝突可能會導致程式無法執行。重新安裝可確保在正確的環境下使用正確的模組。

除了 cv2.dnn_superres 模組,以下這些模組也可能會遇到類似的問題:

  1. cv2.face:這是 OpenCV 中的面部識別模組,如果你使用的 opencv-pythonopencv-contrib-python 版本不支持,它可能會顯示沒有該模組的錯誤。
  2. cv2.bgsegm:這是背景分割的模組,用於移動目標的檢測。它也是 opencv-contrib-python 中的一部分,版本不匹配時可能會遇到 AttributeError
  3. cv2.text:這個模組包含了 OpenCV 中的文字檢測和識別算法,如 OCR。如果 opencv-contrib-python 安裝不完整,它也可能無法使用。
  4. cv2.aruco:這是用於處理 Aruco 標記的模組,也屬於 opencv-contrib-python,出錯的原因可能是版本或模組不匹配。
  5. cv2.xfeatures2d:這個模組包含一些進階的特徵檢測演算法(如 SIFT 和 SURF),這些演算法需要特定版本的 opencv-contrib-python 才能正確使用。

解決方法:

  • 確認安裝版本:確保你安裝的是兼容版本的 opencv-contrib-python,可以使用以下指令檢查版本:
    pip show opencv-python opencv-contrib-python
  • 重新安裝 opencv-contrib-python:確保你的 OpenCV 安裝完整,尤其是需要使用擴展模組時,重新安裝 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 的版本來解決兼容性問題。


檢查已安裝的 OpenCV 套件版本

你可以使用 pip show 指令來檢查已安裝的 OpenCV 相關套件版本:

這將會顯示以下類似的輸出:

raw-image

這將會顯示以下類似的輸出:

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-pythonopencv-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 就夠了?

  1. 完整性opencv-contrib-python 包含了所有 opencv-python 的核心模組功能,並且額外包含了來自 contrib 的擴展模組。
  2. 避免衝突:如果你同時安裝了兩者,opencv-python 可能會覆蓋掉 opencv-contrib-python 中的某些擴展模組,從而導致你無法使用特定的功能,像你提到的 cv2.dnn_superres 就屬於 contrib 擴展模組。
  3. 維護方便:只安裝 opencv-contrib-python 可以避免版本不一致的問題,因為它已經包含了所有必要的模組。這樣可以減少維護和排除錯誤的麻煩。


參考文獻






留言
avatar-img
螃蟹_crab的沙龍
160會員
315內容數
本業是影像辨識軟體開發,閒暇時間進修AI相關內容,將學習到的內容寫成文章分享。 興趣是攝影,踏青,探索未知領域。 人生就是不斷的挑戰及自我認清,希望老了躺在床上不會後悔自己什麼都沒做。
螃蟹_crab的沙龍的其他內容
2025/01/01
錯誤訊息 Makefile:221: *** found no data/foo-ground-truth/*.gt.txt for data/foo/all-gt. Stop. 原先指令 ALL_FILES = $(and $(wildcard $(GROUND_TRUTH_DIR)),$
Thumbnail
2025/01/01
錯誤訊息 Makefile:221: *** found no data/foo-ground-truth/*.gt.txt for data/foo/all-gt. Stop. 原先指令 ALL_FILES = $(and $(wildcard $(GROUND_TRUTH_DIR)),$
Thumbnail
2024/10/12
在有次使用cv2.resize時忽然報錯,就心血來潮不想重新安裝OpenCV,根據缺少的東西想辦法補齊。 在影像處理中,Zlib(以及 zlibwapi.dll)主要用於處理數據壓縮和解壓縮,特別是在處理大型影像文件時。 遺失原因 應用程序安裝過程中未能完整安裝所有所需的依賴項,尤其是 zli
Thumbnail
2024/10/12
在有次使用cv2.resize時忽然報錯,就心血來潮不想重新安裝OpenCV,根據缺少的東西想辦法補齊。 在影像處理中,Zlib(以及 zlibwapi.dll)主要用於處理數據壓縮和解壓縮,特別是在處理大型影像文件時。 遺失原因 應用程序安裝過程中未能完整安裝所有所需的依賴項,尤其是 zli
Thumbnail
2024/10/11
在上一篇文章,使用CUDA加速運行OpenCV發現一個異常,抽絲剝繭找到原因了。 [Python]在 OpenCV 中啟用 CUDA 加速來運行 DNN 超分辨率模型 錯誤描述: Could not locate cublas64_11.dll. Please make sure it i
Thumbnail
2024/10/11
在上一篇文章,使用CUDA加速運行OpenCV發現一個異常,抽絲剝繭找到原因了。 [Python]在 OpenCV 中啟用 CUDA 加速來運行 DNN 超分辨率模型 錯誤描述: Could not locate cublas64_11.dll. Please make sure it i
Thumbnail
看更多
你可能也想看
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
本文將介紹如何安裝CUDA和cuDNN,並提供注意事項。隨著安裝步驟和提示,確保您能成功安裝這些必要的套件。
Thumbnail
本文將介紹如何安裝CUDA和cuDNN,並提供注意事項。隨著安裝步驟和提示,確保您能成功安裝這些必要的套件。
Thumbnail
解決 setuptools 的問題: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools. 解決方法 目前
Thumbnail
解決 setuptools 的問題: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools. 解決方法 目前
Thumbnail
這個章節雖然發生問題, 但也很好的為我們如何解決問題的能力而訓練, 我們也會搭配AI來幫我們找問題, 當然也會一五一十的告訴您該如何問對問題, 關於問對問題很重要可以參考「」, 我們相信過程會對大家有幫助, 請耐心閱讀…, 我們會告訴您AI說正確但事實上並非正確的情境。 我們在「【🔒 Pytho
Thumbnail
這個章節雖然發生問題, 但也很好的為我們如何解決問題的能力而訓練, 我們也會搭配AI來幫我們找問題, 當然也會一五一十的告訴您該如何問對問題, 關於問對問題很重要可以參考「」, 我們相信過程會對大家有幫助, 請耐心閱讀…, 我們會告訴您AI說正確但事實上並非正確的情境。 我們在「【🔒 Pytho
Thumbnail
在樹莓派安裝OpenCV的紀錄。板子是樹莓派3B(沒有+),系統raspbian bullseye 32bit灌到USB隨身碟。
Thumbnail
在樹莓派安裝OpenCV的紀錄。板子是樹莓派3B(沒有+),系統raspbian bullseye 32bit灌到USB隨身碟。
Thumbnail
使用網路上找來的原碼 測試圖片 因版本問題會出現 error pytesseract.pytesseract.TesseractNotFoundError: C:\Program Files (x86)\Tesseract-OCR esseract.exe is not installed or i
Thumbnail
使用網路上找來的原碼 測試圖片 因版本問題會出現 error pytesseract.pytesseract.TesseractNotFoundError: C:\Program Files (x86)\Tesseract-OCR esseract.exe is not installed or i
Thumbnail
初玩python時常用pip安裝各式各樣的套件下來,而這些套件在本機中是以全域的方式安裝。假設今天需要接手別人的專案,所用的套件版本不相容,對於這些仰賴的套件(依賴dependencies)進行管理跟切分就成了一個課題。
Thumbnail
初玩python時常用pip安裝各式各樣的套件下來,而這些套件在本機中是以全域的方式安裝。假設今天需要接手別人的專案,所用的套件版本不相容,對於這些仰賴的套件(依賴dependencies)進行管理跟切分就成了一個課題。
Thumbnail
不管你是程式的新手或老手,不管你是不是第一天寫Python程式,在編譯或執行時絕對有出現程式錯誤或異常的時候,也就是俗稱的「bug」,這對於程式編譯人員是好事,你可以在程式撰寫階段就事先排除這些異常,或是加上捕捉異常的程式區段以及處理程序,讓程式即使出現異常也可以繼續執行。
Thumbnail
不管你是程式的新手或老手,不管你是不是第一天寫Python程式,在編譯或執行時絕對有出現程式錯誤或異常的時候,也就是俗稱的「bug」,這對於程式編譯人員是好事,你可以在程式撰寫階段就事先排除這些異常,或是加上捕捉異常的程式區段以及處理程序,讓程式即使出現異常也可以繼續執行。
Thumbnail
安裝CUDA-8.0 是說因為ubuntu1404的9.0以上的版本我都裝不起來 所以才裝8.0
Thumbnail
安裝CUDA-8.0 是說因為ubuntu1404的9.0以上的版本我都裝不起來 所以才裝8.0
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News