Reputation: 143
Here is my code :
import numpy as np
import cv2
face_cascade = cv2.CascadeClassifier('haarcascase_frontalface_default.xml')
eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml')
cap = cv2.VideoCapture(0)
while True:
ret, img = cap.read()
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray,1.3,5)
for (x,y,w,h) in faces:
cv2.rectangle(img, (x,y), (x+w, y+h), (255,0,0), 2)
roi_gray = gray[y:y+h, x:x+w]
roi_color = img[y:y+h, x:x+w]
eye = eye_cascade.detectMultiScale(roi_gray)
for (ex,ey,ew,eh) in eye:
cv2.rectangle(roi_color, (ex,ey), (ex+ew, ey+eh), (0,255,0), 2 )
cv2.imshow('img',img)
k= cv2.waitKey(30) & 0xff
if k == 27:``
break
cap.release()
cap.destroyAllWindows()
These are the errors I'm getting:
error: OpenCV(4.2.0) C:\projects\opencv-python\opencv\modules\imgproc\src\color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'
error Traceback (most recent call last) in 3 while True: 4 ret, img = cap.read() ----> 5 gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) 6 faces = face_cascade.detectMultiScale(gray,1.3,5) 7 for (x,y,w,h) in faces:
error: OpenCV(4.2.0) C:\projects\opencv-python\opencv\modules\imgproc\src\color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'
Upvotes: 0
Views: 717
Reputation: 11
in your code have 3 little errors:
1= if k == 27:``` for solve first that delete `` 2=
cap.destroyAllWindows()for solve secound, type
cv2.destroyAllWindows() 3=
('haarcascase_frontalface_default.xml')for solve third ,just type this
haarcascade_frontalface_default.xml`
you type cascase but that is cascade.
Upvotes: 1
Reputation: 9389
There could be numerous reasons as to why it doesn't work (eg. some OS will require that you grant permission to your term to access the webcam), however there's a couple of issues with your code:
ret
. It's good practice to check its value with a small check like if not ret: break
to exit the loop. That won't help with your webcam not working, but that will prevent the error that you are seeing (ret
is False, so img
is likely empty and had no data)destroyAllWindows
is a method in the cv2
namespace, not a property of your capture. You should call cv2.destroyAllWindows()
instead of cap.destroyAllWindows()
Upvotes: 0