Moh*_*mar 7 django opencv python-2.7 haar-classifier
这个代码块(在views.py中)由URL触发.导入cv2时没有问题.(使用virtualenvwrapper尝试的同样的事情显示相同的结果(添加所有必需的库之后)相机初始化和....
def caminit(request):
cam.open(0)
img=cam.read()
cv2.imwrite("snap"+".jpg",img[1])
cam.release() #takes the instant pic
faceCascade =cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml')
Run Code Online (Sandbox Code Playgroud)
检查时 print type(faceCascade) 给出<type 'cv2.CascadeClassifier'>.对象已创建.
继续前进 caminit
image = cv2.imread("snap.jpg")
# when checked with image.dtype it shows correct uint8 also image.shape shows correct data {Eg: (480, 640, 3)}
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# Detect faces in the image
faces = faceCascade.detectMultiScale(
gray,
scaleFactor=1.1,
minNeighbors=5,
minSize=(30, 30),
flags = cv2.cv.CV_HAAR_SCALE_IMAGE
)
Run Code Online (Sandbox Code Playgroud)
现在关键部分"寻找面孔的数量"
print "Found {0} faces!".format(len(faces))
Run Code Online (Sandbox Code Playgroud)
终端输出:
Found 0 faces!
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
我已经尝试通过在终端打印进行调试.我在评论中提到过它们.正在使用的相机是我的笔记本电脑(HP羡慕)相机,其分辨率为640x480.
我怀疑有什么需要中进行调整faceCascade.detectMultiScale(..)块(参数).我试图与scalefactor = 1.000001和minNeighbors = 3无济于事.
根据我的经验,预测最好的分类器是:haarcascade_frontalface_alt2.xml,您可以尝试使用它。
这是适合我的代码:
min_face_size=30
max_face_size=100
face_cascade = cv2.CascadeClassifier("haarcascade_frontalface_alt2.xml")
faces = face_cascade.detectMultiScale(img_gray, 1.05,1,0| cv2.cv.CV_HAAR_SCALE_IMAGE,(min_face_size,min_face_size),(max_face_size,max_face_size))
Run Code Online (Sandbox Code Playgroud)
除了尝试此操作之外,您还应该确保加载真实图像。可能会发生这样的情况:您正在加载黑色图像,然后它可以返回类似于您所说的内容(480, 640, 3)。
| 归档时间: |
|
| 查看次数: |
828 次 |
| 最近记录: |