簡體   English   中英

Python opencv 錯誤(-215:斷言失敗) 0 <= scaleIdx && scaleIdx < (int)scaleData->size() in CascadeClassifier.detectMultiScale

[英]Python opencv error (-215:Assertion failed) 0 <= scaleIdx && scaleIdx < (int)scaleData->size() in CascadeClassifier.detectMultiScale

我正在使用 opencv-python package 的 CascadeClassifier 通過 haarcascade_frontalface_default.xml 執行人臉檢測,代碼如下:

self.face_cascade = cv2.CascadeClassifier(haar_cascade_path)

...

gray_frame = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
faces = self.face_cascade.detectMultiScale(gray_frame, 1.3, 5)

它適用於大多數幀,但有時我會遇到此異常:

cv2.error: OpenCV(4.6.0) d:\a\opencv-python\opencv-python\opencv\modules\objdetect\src\cascadedetect.hpp:46: error: (-215:Assertion failed) 0 <= scaleIdx && scaleIdx < (int)scaleData->size() in function 'cv::FeatureEvaluator::getScaleData'

該錯誤發生在detectMultiScale調用期間。 我已經檢查了 gray_frame,它看起來不錯(形狀是 1366x1060,它不是無或類似的東西)。 你知道如何解決這個問題嗎?

我實際上設法解決了這個問題。 導致此錯誤發生的原因是,我正在對數據集進行多線程預處理,並且我只同時為多個工作人員使用了一個實例。 似乎 CascadeClassifier(或至少是檢測方法)不是線程安全的,並且同時提供不同大小的圖像導致了問題。 為每個線程/工作者創建一個實例解決了這個問題。

暫無
暫無

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

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