python+opecv打开电脑本地相机并切换不同分辨率

python+opecv打开电脑本地相机并切换不同分辨率

一、实现业务场景:

1、电脑摄像头功能要切换相机不同分辨率

二、安装、前置条件

1、电脑支持摄像头并驱动正常

2、python安装opencv 并使用国内源【豆瓣】

pip install -i https://pypi.douban.com/simple opencv-python

三、实现代码

import cv2

def change_resolution(cap, width, height):
    cap.set(cv2.CAP_PROP_FRAME_WIDTH, width)
    cap.set(cv2.CAP_PROP_FRAME_HEIGHT, height)

# if __name__ == "__main__":
# 打开摄像头
cap = cv2.VideoCapture(0)

if not cap.isOpened():
    print("无法打开摄像头!!!")

# resolutions = [(640, 480), (1280, 720), (1920, 1080)]
resolutions = [(320, 240),(640, 480), (1280, 720),(1920, 1080),(2560, 1440)]
current_resolution = 0
supported_resolutions = []
for resolution in resolutions:
    width, height = resolution
    cap.set(cv2.CAP_PROP_FRAME_WIDTH, width)
    cap.set(cv2.CAP_PROP_FRAME_HEIGHT, height)
    if cap.get(cv2.CAP_PROP_FRAME_WIDTH) == width and cap.get(cv2.CAP_PROP_FRAME_HEIGHT) == height:
        supported_resolutions.append(resolution)
print("摄像头支持的分辨率:", supported_resolutions)

while True:
    # 获取当前分辨率
    width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
    height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
    print("当前分辨率:{}x{}".format(width, height))

    # 读取一帧
    ret, frame = cap.read()

    if not ret:
        print("无法接收视频流,退出")
        break

    cv2.imshow("Video", frame)
    # 检测按键事件
    key = cv2.waitKey(1)

    # 如果按下 'q' 键,退出循环
    if key & 0xFF == ord('q'):
        break

    # 自动切换到下一个分辨率
    current_resolution = (current_resolution + 1) % len(resolutions)
    width, height = resolutions[current_resolution]
    change_resolution(cap, width, height)
    print("已切换分辨率为{}x{}".format(width, height))

    # 等待一段时间(例如5 b秒)
    cv2.waitKey(1000)

# 释放摄像头资源
cap.release()
cv2.destroyAllWindows()
  • 9
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值