Command:
v4l2-ctl --device=/dev/video0 --devices
v4l2-ctl --device=/dev/video0 --list-formats-ext
The code is below:
import cv2
import time
#相机参数设置
dev=0
width=1280
height=720
gst_str = "v4l2src device=/dev/video{} ! image/jpeg, width={}, height={},framerate=30/1 ! jpegparse ! jpegdec ! videoconvert ! appsink".format(dev, width, height)
print(gst_str)
cap = cv2.VideoCapture(gst_str, cv2.CAP_GSTREAMER)
# 每0.1S计算一次帧率
t = 0.1
counter = 0
fps = 0
start_time = time.time()
while(True):
ret, frame = cap.read()
img = frame.copy()
#print(img.size())
#测帧率
counter += 1
if (time.time() - start_time) > t:
fps = counter / (time.time() - start_time)
fps = str(fps)
counter = 0
start_time = time.time()
cv2.putText(frame, "FPS {0}" .format(fps), (10, 30), 1, 1.5, (255, 0, 255), 2)
cv2.imshow('frame',frame)
if cv2.waitKey(1)&0xFF ==27:
break
cap.release()
cv2.destroyAllWindows()
[1]: https://blog.csdn.net/qq_38392644/article/details/85197264
[2]: https://vimsky.com/examples/detail/python-attribute-cv2.CAP_GSTREAMER.html (13th example)
[3]: https://blog.csdn.net/qq_22763299/article/details/109725101