opencv python

来源:互联网 发布:js除法取整不四舍五入 编辑:程序博客网 时间:2024/06/17 10:38
void detectMultiScale(
const Mat& image,
CV_OUT vector<Rect>& objects,
double scaleFactor = 1.1,
int minNeighbors = 3, 
int flags = 0,
Size minSize = Size(),
Size maxSize = Size()
);




参数1:image--待检测图片,一般为灰度图像加快检测速度;
参数2:objects--被检测物体的矩形框向量组;
参数3:scaleFactor--表示在前后两次相继的扫描中,搜索窗口的比例系数。默认为1.1即每次搜索窗口依次扩大10%;
参数4:minNeighbors--表示构成检测目标的相邻矩形的最小个数(默认为3个)。
        如果组成检测目标的小矩形的个数和小于 min_neighbors - 1 都会被排除。
        如果min_neighbors 为 0, 则函数不做任何操作就返回所有的被检候选矩形框,
        这种设定值一般用在用户自定义对检测结果的组合程序上;
参数5:flags--要么使用默认值,要么使用CV_HAAR_DO_CANNY_PRUNING,如果设置为
        CV_HAAR_DO_CANNY_PRUNING,那么函数将会使用Canny边缘检测来排除边缘过多或过少的区域,
        因此这些区域通常不会是人脸所在区域;

参数6、7:minSize和maxSize用来限制得到的目标区域的范围。



import cv2import sysimagePath = sys.argv[1]cascPath = sys.argv[2]# Create the haar cascadefaceCascade = cv2.CascadeClassifier(cascPath)# Read the imageimage = cv2.imread(imagePath)gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# Detect faces in the image#faces = faceCascade.detectMultiScale(gray, 1.3, 5)faces = faceCascade.detectMultiScale(gray,scaleFactor=1.1,minNeighbors=5,minSize=(30, 30))# Draw a rectangle around the facesfor (x, y, w, h) in faces:    print (str(x)+","+str(y)+","+str(w)+","+str(h))    cv2.rectangle(image, (x, y), (x+w, y+h), (0, 255, 0), 2)cv2.imwrite("face-" + imagePath, image)


实验结果:faces = faceCascade.detectMultiScale(gray,scaleFactor=1.2,minNeighbors=6,minSize=(30, 30),maxSize=(80,80))


原创粉丝点击