[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
留言分享你的想法!
avatar-img
螃蟹_crab的沙龍
150會員
294內容數
本業是影像辨識軟體開發,閒暇時間進修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
2025 vocus 推出最受矚目的活動之一——《開箱你的美好生活》,我們跟著創作者一起「開箱」各種故事、景點、餐廳、超值好物⋯⋯甚至那些讓人會心一笑的生活小廢物;這次活動不僅送出了許多獎勵,也反映了「內容有價」——創作不只是分享、紀錄,也能用各種不同形式變現、帶來實際收入。
Thumbnail
2025 vocus 推出最受矚目的活動之一——《開箱你的美好生活》,我們跟著創作者一起「開箱」各種故事、景點、餐廳、超值好物⋯⋯甚至那些讓人會心一笑的生活小廢物;這次活動不僅送出了許多獎勵,也反映了「內容有價」——創作不只是分享、紀錄,也能用各種不同形式變現、帶來實際收入。
Thumbnail
嗨!歡迎來到 vocus vocus 方格子是台灣最大的內容創作與知識變現平台,並且計畫持續拓展東南亞等等國際市場。我們致力於打造讓創作者能夠自由發表、累積影響力並獲得實質收益的創作生態圈!「創作至上」是我們的核心價值,我們致力於透過平台功能與服務,賦予創作者更多的可能。 vocus 平台匯聚了
Thumbnail
嗨!歡迎來到 vocus vocus 方格子是台灣最大的內容創作與知識變現平台,並且計畫持續拓展東南亞等等國際市場。我們致力於打造讓創作者能夠自由發表、累積影響力並獲得實質收益的創作生態圈!「創作至上」是我們的核心價值,我們致力於透過平台功能與服務,賦予創作者更多的可能。 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