2017-08-07 107 views
1

我正在尝试使用cv2在python-3.6中学习人脸检测。OpenCV错误:Python中的未知错误代码-49

我遵循书中给出的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

lbpcascade_frontalface.xml从https://github.com/opencv/opencv/tree/master/data/lbpcascades –

+1

下载对不起,我罚的问题。我从http://opencv.org/ 更改.xml一切正常。谢谢 –

回答

0

您应该在关闭窗口之前保存图像并将'加利'修复为'灰色'。 像这样改变你的代码。

from numpy import * 
import cv2 

face_cascade = cv2.CascadeClassifier("D:\\Python\\FaceDetec\\lbpcascade_frontalface.xml") 

img = cv2.imread("z1.jpg") 
gray= 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.imwrite("z1.head.jpg", img) 
cv2.waitKey(0) 
cv2.destroyAllWindows()