我在IDLE python(3.7)上调试时遇到的错误是:
cv2.error: OpenCV(3.4.3) (some directory files)
- error : (-215:Assertion failed) !_src.empty() in function 'cvtColor'
程序本身来自网站:
import cv2
import numpy as np
face_cascade = cv2.CascadeClassifier('C:\Program Files\Python38\Lib\site-packages\cv2\data\haarcascade_frontalface_alt2.xml')
cap = cv2.VideoCapture(0)
while True:
ret, frame = cap.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.5, minNeighbors=5)
for (x, y, w, h) in faces:
print(x,y,w,h)
roi_gray = gray[y:y + h, x:x + w] # (ycord_start, ycord_end)
roi_color = frame[y:y + h, x:x + w]
img_item = 'my-image.png'
cv2.imwrite(img_item,roi_gray)
cv2.imshow('frame',frame)
color = (0,0,255)
stroke = 2
width = x + w
height = y + h
cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)
if cv2.waitKey(20) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
所以我想知道是什么导致了此错误。
问题出在
cap = cv2.VideoCapture(0)
实际上0是打开的视频捕获设备的ID(即摄像机索引)。我认为该程序无法检测到任何相机,因此会引发此错误。您可以通过在循环之前打印cap.isOpened()来检查视频捕获是否已经初始化,如果为false,则初始化视频捕获时会遇到问题。
问候