![](/img/trans.png)
[英]cv2.cvtColor error: (-215) scn == 3 || scn == 4 in function cv::cvtColor
[英]picamera with python with opencv cv2.cvtColor error scn == 3 || scn == 4
我正在将raspberry pi camera
和python
与opencv
使用。相机无法正常工作吗? 以下是我的代码段:
import cv2
import numpy as np
import picamera
face_cascade=cv2.CascadeClassifier('haarcascade_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= imb[y:y+h ,x:x+w]
eyes= eye_cascade.detectMultiScale(roi_gray)
for(ex, ey, ew, eh) in eyes:
cv2.recangle(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()
cv2.destroyAllWindows()
它返回:
Traceback (most recent call last):
File "/home/pi/face eye detect.py", line 12, in <module>
gray= cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
error: /build/opencv-U1UwfN/opencv-2.4.9.1+dfsg1/modules/imgproc/src/color.cpp:3737: error: (-215) scn == 3 || scn == 4 in function cvtColor
您可以先尝试检查返回的帧是否不为空(可能需要一点时间才能打开相机并发送完整的有效帧吗?):
if img is not None
例如
import cv2
import numpy as np
import picamera
face_cascade=cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
eye_cascade=cv2.CascadeClassifier('haarcascade_eye.xml')
cap=cv2.VideoCapture(0)
while True:
ret, img=cap.read()
if img is not None:
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= imb[y:y+h ,x:x+w]
eyes= eye_cascade.detectMultiScale(roi_gray)
for(ex, ey, ew, eh) in eyes:
cv2.recangle(roi_color, (ex,ey), (ex+ew,ey+eh), (0,255,0),2)
cv2.imshow('img',img)
else:
print 'empty camera frame, skipping processing'
k=cv2.waitKey(30) &0xff
if k==27:
break
cap.release()
cv2.destroyAllWindows()
值得查阅Adrian的PiCamera OpenCV教程 。 切记,您可以使用picamera模块将相机设置为检索YUV格式而不是RGB的图像。 原因是您可以直接直接检索Y通道(亮度),而不必从RGB转换为灰度(节省处理能力以做更好的事情)。
此外,如果精度不是关键因素,但速度至关重要,那么您可能需要研究LBP级联而不是HAAR级联。
这些只是一些指示,从最适合您的内容开始,然后再建立在最上面。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.