Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opencv与picamera和haar级联python_Python_Opencv_Raspberry Pi2_Haar Classifier - Fatal编程技术网

Opencv与picamera和haar级联python

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

您好,我正在尝试检测使用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')

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