我正在尝试使用opencv使用覆盆子pi相机

时间:2015-01-14 18:31:43

标签: python opencv raspberry-pi

我尝试使用raspberry pi cam制作此代码。 你怎么让cv2.VideoCapture(0)识别覆盆子pi相机作为指定的相机

import cv2

def diffImg(t0, t1, t2):
   d1 = cv2.absdiff(t2, t1)
   d2 = cv2.absdiff(t1, t0)
   return cv2.bitwise_and(d1, d2)

cam = cv2.VideoCapture(0)  

winName = "Movement Indicator"
cv2.namedWindow(winName, cv2.CV_WINDOW_AUTOSIZE)

t_minus = cv2.cvtColor(cam.read()[1], cv2.COLOR_RGB2GRAY)
t = cv2.cvtColor(cam.read()[1], cv2.COLOR_RGB2GRAY)
t_plus = cv2.cvtColor(cam.read()[1], cv2.COLOR_RGB2GRAY)

while True:
   cv2.imshow( winName, diffImg(t_minus, t, t_plus) )

# Read next image
t_minus = t
t = t_plus
t_plus = cv2.cvtColor(cam.read()[1], cv2.COLOR_RGB2GRAY)

key = cv2.waitKey(10)
if key == 27:
   cv2.destroyWindow(winName)
   break

 print ("Goodbye")

5 个答案:

答案 0 :(得分:3)

您不能将cv2.VideoCapture()用于RaspiCam。

cv2.VideoCapture()仅适用于USB相机,不适用于CSI相机。

如果您想使用RaspiCam进行捕获,可以参考此处 tutorial

答案 1 :(得分:1)

前段时间,我开发了一个带有raspicam的rasperry pi,这是一个opencv接口。 我认为纯cv中的视频捕获仅适用于USB设备

你可以下载raspicam http://sourceforge.net/projects/raspicam/files/

答案 2 :(得分:0)

根据我的理解,您需要找到覆盆子pi相机的位置#并更改

cam = cv2.VideoCapture(0)

cam = cv2.VideoCapture(Camera#) 

答案 3 :(得分:0)

尝试以下操作:

video_capture = cv2.VideoCapture(
            get_jetson_gstreamer_source(), cv2.CAP_GSTREAMER
        )

答案 4 :(得分:-1)

The problem就是你not coding safely

如果您检查了方法的返回,您会立即知道0不是您相机的索引:

import sys

cam = cv2.VideoCapture(0)  
if not cam:
    print("!!! Failed VideoCapture: invalid parameter!")
    sys.exit()

尝试数字>的 0