提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

使用香橙派5 Ultra(RK3588)的时候,我使用python驱动工业摄像头,但是帧率一直维持在20 fps - 25 fps
使用的是威鑫的H264编码-1080P摄像头


提示:以下是本篇文章正文内容,下面案例可供参考

一、python调用摄像头

示例:使用python调用摄像头

import cv2
import time

cap = cv2.VideoCapture(1)
if not cap.isOpened():
    print("can't open camer.")
    exit()
count = 0
start_time = time.time()

while True:
    ret,frame = cap.read()
    if not ret:
        print("can't read!")
        break

    count +=1
    elapsed_time = time.time() - start_time
    fps = count / elapsed_time
    cv2.putText(frame,f"FPS:{fps:.2f}",(10,30),cv2.FONT_HERSHEY_SIMPLEX,1,(0,255,0),2)

    cv2.imshow('Camera',frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

在这里插入图片描述

二、改变编码优化程序

1.增加两句改变编码

代码如下(示例):

#MJPEG 是一种常见的视频编码格式,它将视频的每一帧压缩为 JPEG 图像。优点是压缩率高,适合实时视频传输。
cap.set(6,cv2.VideoWriter.fourcc('M','J','P','G'))
#设置帧率为60
cap.set(5,60)

2.总程序

代码如下(示例):

import cv2
import time

cap = cv2.VideoCapture(1)

cap.set(6,cv2.VideoWriter.fourcc('M','J','P','G'))
cap.set(5,60)
if not cap.isOpened():
    print("can't open camer.")
    exit()
count = 0
start_time = time.time()

while True:
    ret,frame = cap.read()
    if not ret:
        print("can't read!")
        break

    count +=1
    elapsed_time = time.time() - start_time
    fps = count / elapsed_time
    cv2.putText(frame,f"FPS:{fps:.2f}",(10,30),cv2.FONT_HERSHEY_SIMPLEX,1,(0,255,0),2)

    cv2.imshow('Camera',frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

显著提高帧率到60 fps,结果如下
在这里插入图片描述


Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐