我是一个使用OpenCV人脸检测器的新手。人脸检测效果很好,但我正在尝试使用生成的矩形在人脸周围制作一个框架,并将其剪切以将人脸保存在新的归档中。我一直将getSubRect与"haarcascade_frontalface_default“返回的值(左、上、宽、高)一起使用。假设图像的参数是( GetSubRect,(左、上、右、下),但它不起作用,因为生成的图像没有使面部居中。我的错误是什么?
代码如下:
import sys
import cv
imcolor = cv.LoadImage('C:\\Temp\\camera_test2.jpg') # input image
# loading the classifier
haarFace = cv.Load('c:\opencv\data\haarcascades\haarcascade_frontalface_default.xml')
# running the classifier
storage = cv.CreateMemStorage()
detectedFace = cv.HaarDetectObjects(imcolor, haarFace, storage, 1.1)
if detectedFace:
arg1 = detectedFace[0][0][0]
arg2 = detectedFace[0][0][1]
arg3 = detectedFace[0][0][2]
arg4 = detectedFace[0][0][3]
Izq = arg1 - arg3/10
Sup = arg2 - arg4/6
Der = arg1 + arg3 #+ (arg3/10)
Inf = arg2 + arg4 +(arg4/6)
print detectedFace
print Izq
print Sup
print Der
print Inf
imcolor2 = cv.GetSubRect(imcolor,(Izq, Sup, Der, Inf))
cv.SaveImage('C:\\temp\\test_1.JPG', imcolor2)
cv.WaitKey()
发布于 2013-02-05 20:26:58
cv.GetSubRect
需要(x, y, width, height)
for face, neighbors in detectedFace:
im_face = cv.GetSubRect(imcolor, face)
另请参阅documentation和OpenCV Cookbook。
也就是说,为什么不使用cv2
https://stackoverflow.com/questions/14695998
复制相似问题