我尝试使用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")
答案 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 强>