OpenCV错误:Python

时间:2017-08-07 09:04:24

标签: python opencv

我正在尝试使用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

请帮助我。谢谢。

4 个答案:

答案 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年后,我希望它能对某人有所帮助。