使用 Python 时,
openCV函数
cv.HaarDetectObjects()
返回找到的对象以及检测分数。
如果我使用opencv2函数,
cv2.CascadeClassifier.detectMultiScale()
我得到了检测到的对象,但没有得分。这使得很难获得检测的良好“置信度”。
有没有办法以某种方式使用CV2?
答案 0 :(得分:1)
cv2.CascadeClassifier.detectMultiScale(image, rejectLevels, levelWeights[, scaleFactor[, minNeighbors[, flags[, minSize[, maxSize[, outputRejectLevels]]]]]]) → objects
列表rejectLevels
是一种表示检测结果可信度的分数。
相应的(但未记录的)C++ API是:
CV_WRAP virtual void detectMultiScale( const Mat& image,
CV_OUT vector<Rect>& objects,
vector<int>& rejectLevels,
vector<double>& levelWeights,
double scaleFactor=1.1,
int minNeighbors=3, int flags=0,
Size minSize=Size(),
Size maxSize=Size(),
bool outputRejectLevels=false );
答案 1 :(得分:0)
我知道这是一个非常古老的问题,但因为有一个未回答的评论:可以使用 detectMultiScale3
方法,该方法接受 outputRejectLevels
布尔参数并返回置信度分数。
weights='data/haarcascades/haarcascade_frontalface_alt.xml'
face_cascade = cv2.CascadeClassifier()
face_cascade.load(cv2.samples.findFile(weights))
face_cascade.detectMultiScale3(image, outputRejectLevels=True)