RKNN3588——获取摄像头设备

使用ls命令列出/dev目录下的设备文件,找到摄像头设备。通常,摄像头设备会以video开头,如/dev/video0,如下图所示

ls /dev | grep video

 

 找出可用的摄像头设备

通过ls /dev | grep video命令找出所有的摄像头设备,然后通过opencv去测试找到的摄像头能否采集帧图像,可以则写入1.txt文本里,程序运行完成后在写入的1.txt文本里就能找到可用的摄像机设备号了

import subprocess
import cv2

# 获得摄像头相关的列表
def get_video_device():
    # 运行命令并捕获输出
    result = subprocess.run(['ls', '/dev'], capture_output=True, text=True)
    devices = result.stdout.split("\n")
    video_device_list = []
    for device in devices:
        if "video" in device:
            device = f'/dev/{device}'
            video_device_list.append(device)
    return video_device_list


# 尝试检查系统中的所有摄像头设备
for device_id in get_video_device():  # 假设系统中最多有10个摄像头设备,根据列出来的id遍历列表即可
    cap = cv2.VideoCapture(device_id)
    if cap.isOpened():
        print(f"找到摄像头设备: {device_id}")
        ret, frame = cap.read()
        if ret:
            # 如果摄像头可以打开并且可以读取帧,则保存到1.txt文本里
            with open("1.txt",'w',encoding='utf-8') as f:
                f.write(str(device_id))
            # cv2.imshow(f'Camera {device_id}', frame)
        else:
            print(f"摄像头 {device_id} 无法读取帧")
    else:
        print(f"摄像头 {device_id} 无法打开")
    cap.release()  # 释放摄像头资源

# 等待所有窗口关闭
cv2.waitKey(0)
cv2.destroyAllWindows()

 

测试采集的视频是否正确

import cv2
 
# 输出视频文件路径
output_path = '/home/firefly/Project/px01/output_video.mp4'
 
# 打开视频文件
cap = cv2.VideoCapture(0)
 
# 获取视频的帧率和帧尺寸
fps = 30
frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
 
# 设置结束时间
end_time = 5    # 结束时间(秒)
 
# 计算结束帧
end_frame = int(end_time * fps)
 
# 创建视频写入对象
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
out = cv2.VideoWriter(output_path, fourcc, fps, (frame_width, frame_height))
 
# 读取视频帧
frame_idx = 0
while frame_idx<end_frame:
    ret, frame = cap.read()
    if not ret:
        break

    out.write(frame)  # 写入剪辑后的视频
 
    frame_idx += 1
 
# 释放资源
cap.release()
out.release()

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张飞飞飞飞飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值