OpenCV Python 多尺度检测

2 投票
1 回答
1474 浏览
提问于 2025-04-18 06:51

大家好,你们能给我一些关于OpenCV的建议吗?当我想打印r来查看rejectLevels时,它只打印出一个空数组。

#!/usr/bin/python
# -*- coding: utf-8 -*-

import os, sys, logging, time
import numpy as np
import cv2
import cv2.cv as cv


face_cacade = '../home/haarcascade_frontalface_default.xml'

xml = cv2.CascadeClassifier(face_cascade)

array_of_images = [] --> Some images

for image in array_of_images:              

        img   = cv2.imread(image)

        gray  = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

        gray  = cv2.equalizeHist(gray)

        **r**  =  []
        x  =  []

        #cv2.CascadeClassifier.detectMultiScale(image, rejectLevels, levelWeights[, scaleFactor[, minNeighbors[, flags[, minSize[, maxSize[, outputRejectLevels]]]]]]) → objects
        faces = xml.detectMultiScale(image = img, rejectLevels = **r**, levelWeights = x ,scaleFactor=1.05, minNeighbors=1, minSize=(30, 30), flags = cv.CV_HAAR_SCALE_IMAGE)


        file_out  = open('/tmp/faces_score.txt','w+',0)

        for (x,y,w,h) in faces: 

        cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),1)

        roi_gray  = gray[y:y+h, x:x+w]

        roi_color = img[y:y+h, x:x+w]

        print **r**, x

你们能给我一些关于Opencv detectMultiScale的解决方案或经验吗?我查看了C++的源代码,感觉没问题,但在Python中它却没有按预期工作。OpenCV版本:2.4.8,Python版本:2.7.6

1 个回答

0

我不太确定我理解得对不对,如果错了请纠正我。不过,rejectlevels不应该是一个浮点数值吗?另外,你没有给r赋值,这样它就会一直是一个空数组,永远不会改变。我最近也用opencv python做过detectmultiscale,下面是我做的事情:

faces = face_cascade.detectMultiScale(gray, 1.3, 5)

其中1.3就是rejectlevels的意思。

撰写回答