=============================================== 图像获取与录制 =============================================== ******************** 说明 ******************** #. 使用前,请关闭ROS程序,摄像头只能同时被一个程序访问。 #. 参考下面的示例代码,更改 ``gstreamer_pipeline()`` 函数的默认参数,从而更改摄像头的配置参数。 ******************** 示例代码 ******************** .. code-block:: python import cv2 def gstreamer_pipeline( sensor_id=1, # 摄像头编号 capture_width=1280, # 采集分辨率width capture_height=720, # 采集分辨率height display_width=1280, display_height=720, framerate=60, # 采集帧率 flip_method=2, # 视频翻转模式,因为模块的摄像头是反装的,所以使用2(180翻转) ): return ( "nvarguscamerasrc sensor-id=%d ! " "video/x-raw(memory:NVMM), " "width=(int)%d, height=(int)%d, " "format=(string)NV12, framerate=(fraction)%d/1 ! " "nvvidconv flip-method=%d ! " "video/x-raw, width=(int)%d, height=(int)%d, format=(string)BGRx ! " "videoconvert !" "video/x-raw, format=(string)BGR ! appsink" % ( sensor_id, capture_width, capture_height, framerate, flip_method, display_width, display_height, ) ) def show_camera(): print(gstreamer_pipeline(flip_method=2)) cap = cv2.VideoCapture(gstreamer_pipeline(flip_method=2), cv2.CAP_GSTREAMER) if cap.isOpened(): window_handle = cv2.namedWindow("CSI Camera", cv2.WINDOW_AUTOSIZE) # Window while cv2.getWindowProperty("CSI Camera", 0) >= 0: ret_val, img = cap.read() cv2.imshow("CSI Camera", img) # This also acts as keyCode = cv2.waitKey(30) & 0xFF # Stop the program on the ESC key if keyCode == 27: break cap.release() cv2.destroyAllWindows() else: print("Unable to open camera") if __name__ == "__main__": show_camera()