簡體   English   中英

OpenCV 4.0.0 系統錯誤:<class 'cv2.CascadeClassifier'> 返回帶有錯誤集的結果

[英]OpenCV 4.0.0 SystemError: <class 'cv2.CascadeClassifier'> returned a result with an error set

你好,我正在嘗試創建一個面部識別程序,但我有一個奇怪的錯誤:這是我的代碼:

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
face_cascade = cv2.CascadeClassifier("lbpcascade_frontalface.xml")
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.2, minNeighbors=5);

這個錯誤是輸出

SystemError: <class 'cv2.CascadeClassifier'> returned a result with an error set

我在工作目錄中有“lbpcascade_frontalface.xml”,所以這應該不是問題

如果我輸入時有幫助

cv2.__version__

我得到

'4.0.0'

新答案OpenCV 現在似乎有一個專用於級聯的目錄,它們被放置在data ,我現在在教程中看到類似這樣的東西haar_cascade_face = cv2.CascadeClassifier('data/haarcascade/haarcascade_frontalface_default.xml')你可能必須查找data在您的機器上或以上我的工作中的位置。 自從我在 2019 年初完成這個項目以來,我一直沒有接觸過這個項目。請記住,這僅適用於正面,如果您想將 Haar's Cascade 用於眼睛,這是一個單獨的文件。

舊答案原來我不需要下載另一個文件並使用它,因為 opencv 附帶了這一點代碼工作

cv2.CascadeClassifier(cv2.data.haarcascades + "haarcascade_frontalface_default.xml")

好吧,我遇到了同樣的問題,因為@TylerStrouth 提到此代碼片段不起作用:

cv2.CascadeClassifier(cv2.data.haarcascades + "haarcascade_frontalface_default.xml")

因為如果您剛剛以pip install opencv-pythonsudo apt-get install python3-opencv的標准格式安裝了opencv ,則數據目錄中沒有 haarcascades 文件

您將收到類似於此 stackoverflow question的錯誤,其中提到的解決方案對我有用,也就是說,如果您使用的是 python3,那么您還需要在運行上述代碼片段之前安裝opencv-contrib-python

pip install opencv-contrib-python

它有完整的包(包含主要模塊和 contrib/extra 模塊

如下更改您的代碼,這對我有用

har_cascade = cv2.CascadeClassifier(cv2.data.haarcascades +'har.xml')

正如上面@TylerStrouth 所解釋的,opencv 有一個級聯目錄,其中級聯文件可用,我在 Ubuntu 16.04 上運行人臉檢測代碼時也遇到了同樣的問題,解決方法如下

  1. 使用獲取opencv的位置

    哪里有opencv

  2. 我的在 /usr/share/opencv

  3. 檢查級聯是否存在於該位置,並將該位置與所需的 haarcascade 復制粘貼到 cv2.CascadeClassifier 中

我以不同的方式遇到了同樣的問題。 我在這里使用 Jupiter notebook 執行代碼

我從這里復制了 XML 文件並在當前的 Jupiter 目錄中創建了一個 XML 文件,當使用以下方法加載此文件時:

classifier = CascadeClassifier('haarcascade_frontalface_default.xml')

它返回了我的錯誤:

SystemError: <class 'cv2.CascadeClassifier'> returned a result with an error set

所以,我嘗試了其他方式,刪除了這個文件,並在當前目錄中以 XML 格式下載了實際文件,這解決了我的問題。

當我使用hogcascade_pedestrians.xml從本地視頻中檢測行人時,我遇到了同樣的錯誤,我正在閱讀hogcascade_pedestrians.xml ,如下所示:

pedestrainsClassifier = cv2.CascadeClassifier("hogcascade_pedestrians.xml")

其中你應該閱讀如下:

pedestrainsClassifier = cv2.CascadeClassifier(f"{cv2.data.haarcascades}hogcascade_pedestrians.xml")

或者,您可以按如下方式進行:

pedestrainsClassifier = cv2.CascadeClassifier(cv2.data.haarcascades +"hogcascade_pedestrians.xml")

祝你好運

在 opencv-python 的3.4.9.33版( pip show opencv-python ,Windows)上,以下行工作正常: trained_face_data = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM