无法在django(使用python opencv)项目中找到人脸(人脸检测)

无法在django(使用python opencv)项目中找到人脸(人脸检测),django,python-2.7,opencv,haar-classifier,Django,Python 2.7,Opencv,Haar Classifier,这段代码(在views.py中)是由URL触发的。导入cv2没有问题。(使用VirtualEnvrapper尝试的相同方法显示相同的结果(在添加所有必需的库之后)摄影机初始化并 def caminit(request): cam.open(0) img=cam.read() cv2.imwrite("snap"+".jpg",img[1]) cam.release() #takes the instant pic

这段代码(在views.py中)是由URL触发的。导入cv2没有问题。(使用VirtualEnvrapper尝试的相同方法显示相同的结果(在添加所有必需的库之后)摄影机初始化并

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')
选中打印类型(faceCascade)时,将给出
。对象将被创建

在相同的
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
)
现在关键的部分是“找到脸的数量”

终端中的输出:

Found 0 faces!
为什么会这样

我试过在终端上打印来进行调试。我在评论中提到过。使用的相机是我的笔记本电脑(HP envy)相机,分辨率为640x480


我怀疑需要在
faceCascade.detectMultiScale(…)
块中调整一些参数。我尝试了
scalefactor=1.000001
minNeighbors=3
但没有用。

根据我的经验,预测最好的分类器是:haarcascade\u frontalface\u 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).

你似乎只包含了你问题的一小部分。请包括剩下的部分,希望还有你迄今为止尝试/研究的内容以及为什么不起作用。我正在编辑问题。旧问题是错误发布的。请查看新问题。你检查过图片是否正确创建了吗?是否有cl照片中应该是什么样的脸?(图片中的灯光等)图片完全是用脸打开的。我已经尝试过很多次了。但是当我尝试相同的代码(def caminit内部)时,使用简单的“python caminit.py”运行没有与Django集成,没有出现错误,检测到人脸。这就是为什么我想知道照片是否真的正确创建(在Django中)我知道的每台服务器都没有摄像头,所以我不确定它应该如何能够拍摄照片(它肯定无法访问用户机器).我原以为你需要在客户端拍张照片,然后发送到你的视图
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))