画像処理についての勉強を始めたばかりで,PythonにてOpenCVを利用してカメラキャプチャから顔認識を行うプログラムを作成したいのですがコードを実装するとcv::cvtColorのエラーが出てしまいます.自身でも調べてみて画像のグレー化処理のみでも同じエラーが発生するのでおそらくキャプチャの問題なのかなと思いますが,このエラーの解決方法が見つからず苦戦しているため質問させていただきます.
開発環境
Windows11
Opencv4.10.0
Python3.13
VisualStudio Community2022
エラー文
cv2.error: OpenCV(4.10.0) D:\a\opencv-python\opencv-python\opencv\modules\imgproc\src\color.cpp:196: error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'
コード
import cv2 face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml') cap = cv2.VideoCapture(0) while True: ret, img = cap.read() gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=3, minSize=(20,20)) for (x, y, w, h) in faces : cv2.rectangle(img,(x,y), (x+w, y+h), (255, 255, 0), 3 ) cv2.imshow('Face Detection', img) if cv2.waitKey(1) & 0xFF == ord('q'): break; cap.release() cv2.destroyAllWindows()
エラーメッセージには以下の様に表示されていますので、
error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'
cap.read() の戻り値(img)が空なのだと思います。(キャプチャに失敗)
cap = cv2.VideoCapture(0)
while True:
ret, img = cap.read()
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
コメントありがとうございます.print関数でimg値とret値を調べたところNoneとFalseでかえってきたためおっしゃる通り原因はキャプチャの失敗のようです.
Pathなども見返していますがいまだ解決に至っていません...
回答2件
あなたの回答
tips
プレビュー