gpt4 book ai didi

python - picamera with python with opencv cv2.cvtColor error scn == 3 || scn == 4

转载 作者:行者123 更新时间:2023-12-02 17:37:01 26 4
gpt4 key购买 nike

我正在使用 raspberry pi camerapythonopencv .是相机没有工作吗?
下面是我的代码片段:

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's PiCamera OpenCV tutorial .
请记住,您可以使用 picamera module设置相机以检索 YUV format 中的图像而不是RGB。原因是您可以直接检索 Y channel (亮度),而无需从 RGB 转换为灰度(节省处理能力以获得更好的效果)。

此外,如果准确性不重要,但速度很重要,您可能需要查看 LBP cascades而不是 HAAR 级联。

这些只是一些提示,先从最适合您的东西开始,然后再建立在上面。

关于python - picamera with python with opencv cv2.cvtColor error scn == 3 || scn == 4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50152665/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com