Opencv与picamera和haar级联python
您好,我正在尝试检测使用PiCamera和Haar Cascade的车辆,但遇到了错误。Opencv与picamera和haar级联python,python,opencv,raspberry-pi2,haar-classifier,Python,Opencv,Raspberry Pi2,Haar Classifier,您好,我正在尝试检测使用PiCamera和Haar Cascade的车辆,但遇到了错误。 import numpy as np import cv2 from picamera import PiCamera from picamera.array import PiRGBArray import time import io from picamera.array import PiYUVArray car_cascade = cv2.CascadeClassifier('cars3.xml
import numpy as np
import cv2
from picamera import PiCamera
from picamera.array import PiRGBArray
import time
import io
from picamera.array import PiYUVArray
car_cascade = cv2.CascadeClassifier('cars3.xml')
camera = PiCamera()
camera.resolution = (640, 480)
camera.framerate = 32
rawCapture = PiRGBArray(camera, size=(640, 480))
time.sleep(0.1)
for frame in camera.capture_continuous(rawCapture, format="rgb", use_video_port=True):
image = frame.array
while 1:
gray = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY)
cars = car_cascade.detectMultiScale(gray, 1.3, 5)
for (x,y,w,h) in cars:
cv2.rectangle(image,(x,y),(x+w,y+h),(255,0,0),2)
roi_gray = gray[y:y+h, x:x+w]
roi_color = image[y:y+h, x:x+w]
cv2.imshow("Frame", image)
key = cv2.waitKey(1) & 0xff
rawCapture.truncate(0)
rawCapture.seek(0)
if key == ord("q"):
break
cap.release()
cv2.destroyAllWindows()
运行上述代码后,我得到了这些错误
回溯(最近一次呼叫最后一次):
文件“test1.py”,第18行,在
对于照相机中的帧。连续捕获(rawCapture,format=“rgb”,使用\u video\u port=True):
文件“/usr/lib/python2.7/dist packages/picamera/camera.py”,第1851行,连续捕获
如果不是编码器,请等待(self.CAPTURE\u超时):
文件“/usr/lib/python2.7/dist packages/picamera/encoders.py”,第850行,正在等待
self.stop()
文件“/usr/lib/python2.7/dist packages/picamera/encoders.py”,第881行,在stop中
self.\u close\u output()
文件“/usr/lib/python2.7/dist packages/picamera/encoders.py”,第795行,输入关闭
output.flush()
文件“/usr/lib/python2.7/dist packages/picamera/array.py”,第285行,刷新
self.array=bytes_to_rgb(self.getvalue()、self.size或self.camera.resolution)
文件“/usr/lib/python2.7/dist packages/picamera/array.py”,第174行,以字节为单位
'分辨率%dx%d'(宽度、高度)的缓冲区长度不正确'
picamera.exc.PiCameraValueError:分辨率640x480的缓冲区长度不正确
*我怀疑这是因为相机。连续捕获
我需要插入rawCapture。截断(0)
和rawCapture.seek(0)
在它下面工作。
但是,当我将这两行都插入到摄影机下。连续捕获时,我需要在下方插入cv2.imshow(“帧”,图像)
,否则帧将不显示。然而,如果我这样做了,我的haar级联代码就会被忽略而不起作用。我最近才开始编写代码,所以我的假设可能是错误的。非常感谢您的帮助。*
Traceback (most recent call last):
File "test1.py", line 18, in <module>
for frame in camera.capture_continuous(rawCapture, format="rgb", use_video_port=True):
File "/usr/lib/python2.7/dist-packages/picamera/camera.py", line 1851, in capture_continuous
if not encoder.wait(self.CAPTURE_TIMEOUT):
File "/usr/lib/python2.7/dist-packages/picamera/encoders.py", line 850, in wait
self.stop()
File "/usr/lib/python2.7/dist-packages/picamera/encoders.py", line 881, in stop
self._close_output()
File "/usr/lib/python2.7/dist-packages/picamera/encoders.py", line 795, in _close_output
output.flush()
File "/usr/lib/python2.7/dist-packages/picamera/array.py", line 285, in flush
self.array = bytes_to_rgb(self.getvalue(), self.size or self.camera.resolution)
File "/usr/lib/python2.7/dist-packages/picamera/array.py", line 174, in bytes_to_rgb
'Incorrect buffer length for resolution %dx%d' % (width, height))
picamera.exc.PiCameraValueError: Incorrect buffer length for resolution 640x480