Estoy tratando de hacer que la cámara raspberry pi funcione con opencv

Intenté hacer que este código funcionara con la Raspberry Pi Cam. ¿Cómo hacer que la cv2.VideoCapture (0) reconozca la cámara raspberry pi como la cámara designada?

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") 

No puede usar cv2.VideoCapture() para RaspiCam.

cv2.VideoCapture() es solo para cámara USB, no para cámara CSI.

Si desea utilizar RaspiCam para la captura, puede consultar este tutorial.

Hace algún tiempo, desarrollé en un rasperry pi con raspicam, una interfaz para opencv. Pensé que la captura de video en cv puro solo funciona para dispositivos USB

Puede descargar raspicam en http://sourceforge.net/projects/raspicam/files/

Por lo que puedo entender, debe encontrar la ubicación # de la cámara raspberry pi y cambiarla.

 cam = cv2.VideoCapture(0) 

a

 cam = cv2.VideoCapture(Camera#) 

El problema es que no estás codificando de forma segura .

Si tuviera que verificar el retorno del método, sabría al instante que 0 no es el índice de su cámara:

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

Prueba números> 0 .