我正在尝试使用cv2在python-3.6中学习面部检测。
我按照书中给出的src。
我已经通过 pip
安装了 opencv-python(3.2.0).xml和.jpg文件都与python代码在同一路径中。
from numpy import *
import cv2
face_cascade = cv2.CascadeClassifier("D:\\Python\\FaceDetec\\lbpcascade_frontalface.xml")
img = cv2.imread("z1.jpg")
gary = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, 1.2, 3)
for(x, y, w, h) in faces:
img2 = cv2.rectangle(img, (x, y), (x+w, y+h), (255, 255, 255), 2)
roi_gray = gray[y:y+h, x:x+w]
roi_color = img[y:y+h, x:x+w]
cv2.imshow("img", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
cv2.imwrite("z1.head.jpg", img)
我收到了一个我无法在任何地方找到的错误。
OpenCV Error: Unknown error code -49 (Input file is empty) in cvOpenFileStorage, file D:\Build\OpenCV\opencv-3.2.0\modules\core\src\persistence.cpp, l
ine 4422
Traceback (most recent call last):
File "d:\Python\FaceDetec\Harr_cascade.py", line 6, in <module>
face_cascade = cv2.CascadeClassifier("D:\\Python\\FaceDetec\\lbpcascade_frontalface.xml")
cv2.error: D:\Build\OpenCV\opencv-3.2.0\modules\core\src\persistence.cpp:4422: error: (-49) Input file is empty in function cvOpenFileStorage
请帮助我。谢谢。
答案 0 :(得分:1)
在这个琐碎的小问题上,我花了很多时间。真正的问题是Open CV仅适用于Haarcascade XML文件,该文件可在Opencv.org网站上获得,而不能从github
获得。答案 1 :(得分:0)
你应该在关闭窗口之前保存图像。并且修复“加里”&#39;灰色&#39; 像这样更改你的代码。
JsonConverter
答案 2 :(得分:0)
当您的xml文件不是有效的级联文件时会出现此错误。
我建议使用此链接中的正面级联。
https://github.com/opencv/opencv/tree/master/data/haarcascades
答案 3 :(得分:0)
我也遇到了同样的错误,这是因为您使用了单击右键和“下载为...”的方法下载了模型。如果打开该文件,您将看到XML的结构错误。它应该以这样的开头:
<?xml version="1.0"?>
<!--
number of positive samples 3000
number of negative samples 1500
-->
<opencv_storage>
<cascade type_id="opencv-cascade-classifier">
<stageType>BOOST</stageType>
<featureType>LBP</featureType>
因此,您应在存储库(https://github.com/opencv/opencv/blob/master/data/lbpcascades/lbpcascade_frontalface.xml)中作为原始文件打开并复制或使用git下载存储库。
即使我的答案是3年后,我希望它能对某人有所帮助。