在 django(使用 python-opencv)项目中找不到人脸(人脸检测)
Posted
技术标签:
【中文标题】在 django(使用 python-opencv)项目中找不到人脸(人脸检测)【英文标题】:Not able to find faces(face-detection) in django (using python-opencv) project 【发布时间】:2016-03-13 01:03:29 【问题描述】:这段代码(在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')
检查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
)
现在是“寻找面孔数量”的关键部分
print "Found 0 faces!".format(len(faces))
终端中的输出:
Found 0 faces!
为什么会这样?
我已经尝试通过在终端中打印进行调试。我在 cmets 中提到了它们。正在使用的相机是我的笔记本电脑 (HP envy) 相机,它可以提供分辨率为 640x480 的快照。
我怀疑faceCascade.detectMultiScale(..)
块中需要调整一些东西。(参数)。我尝试使用scalefactor = 1.000001
和minNeighbors = 3
无济于事。
【问题讨论】:
您似乎只包含了您的问题的一小部分。请包含其余部分,希望连同您迄今为止尝试/研究的内容以及为什么没有奏效 我正在编辑问题。旧问题被错误地发布了。请看一下新问题。 您是否检查过图片是否正确创建?应该是一张脸的照片中是否有明显的区别? (图片中的照明等) 正脸开图完美。我试过很多次了。 但是当我尝试使用简单的“python caminit.py”运行相同的代码(在 def caminit 内)而不与 Django 集成时,没有出现错误,检测到 FACE。 这就是为什么我很好奇图片是否真的正确创建(在 django 中)我知道的每个服务器都没有相机所以我不确定它应该如何能够拍照(它当然无权访问用户机器)。我原以为您需要在客户端拍照并将其发送到您的视图 【参考方案1】:根据我的经验,预测最好的分类器是这样的: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))
除了尝试此操作外,您还应确保加载的是真实图像。可能会发生您正在加载黑色图像,然后它可以返回类似于您所说的内容(480、640、3)。
【讨论】:
以上是关于在 django(使用 python-opencv)项目中找不到人脸(人脸检测)的主要内容,如果未能解决你的问题,请参考以下文章