opencv获取摄像头的最大分辨率图像

事情是这样的,在拼多多花了40买了一个4k高清的摄像偷,确实清楚。但是我一直以为网络摄像头分辨率只有640*480,于是用python测试了一下,上代码

import cv2

def get_max_resolution(camera_index):
    """
    获取摄像头的最大分辨率。
    """
    cap = cv2.VideoCapture(camera_index)
    if not cap.isOpened():
        return None, None

    max_width, max_height = 0, 0
    # 定义常见分辨率列表
    resolutions = [
        (640, 480),
        (1280, 720),
        (1920, 1080),
        (2560, 1440),
        (3840, 2160)
    ]

    for width, height in resolutions:
        cap.set(cv2.CAP_PROP_FRAME_WIDTH, width)
        cap.set(cv2.CAP_PROP_FRAME_HEIGHT, height)

        actual_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
        actual_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))

        if actual_width == width and actual_height == height:
            max_width, max_height = actual_width, actual_height

    cap.release()
    return max_width, max_height


def find_all_cameras(max_index=10):
    """
    遍历所有可用的摄像头并输出最大分辨率。
    """
    cameras = []

    for camera_index in range(max_index):
        cap = cv2.VideoCapture(camera_index)
        if cap.isOpened():
            cameras.append(camera_index)
            cap.release()

    print(f"发现 {len(cameras)} 个摄像头:")
    for camera in cameras:
        max_width, max_height = get_max_resolution(camera)
        if max_width and max_height:
            print(f"摄像头 {camera} 的最大分辨率为:{max_width}x{max_height}")
        else:
            print(f"摄像头 {camera} 无法获取分辨率")


def capture_image_with_maximized_window(camera_index, width, height):
    """
    采集摄像头图像并以最大化窗口显示。
    """
    cap = cv2.VideoCapture(camera_index)
    if not cap.isOpened():
        print(f"无法打开摄像头 {camera_index}")
        return

    # 设置摄像头分辨率
    cap.set(cv2.CAP_PROP_FRAME_WIDTH, width)
    cap.set(cv2.CAP_PROP_FRAME_HEIGHT, height)

    actual_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
    actual_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
    print(f"实际采集的图像分辨率: 宽度={actual_width}, 高度={actual_height}")

    ret, frame = cap.read()
    if ret:
        # 创建窗口并最大化
        cv2.namedWindow("Captured Frame", cv2.WINDOW_NORMAL)
        cv2.resizeWindow("Captured Frame", 1920, 1080)  # 设置默认分辨率窗口大小
        cv2.imshow("Captured Frame", frame)

        # 保存图像到本地
        cv2.imwrite("captured_image.jpg", frame)
        print("图像已保存为 'captured_image.jpg'")
    else:
        print("无法采集图像")

    # 等待按键退出
    cv2.waitKey(0)
    cap.release()
    cv2.destroyAllWindows()


if __name__ == "__main__":
    # 遍历所有摄像头并输出最大分辨率
    find_all_cameras()

    # 示例:采集第一个摄像头的图像
    camera_index = 0
    capture_width = 1920
    capture_height = 1080
    capture_image_with_maximized_window(camera_index, capture_width, capture_height)

输出为:发现 2 个摄像头:

摄像头 0 的最大分辨率为:1920x1080

摄像头 2 的最大分辨率为:1920x1080

实际采集的图像分辨率: 宽度=1920, 高度=1080

买了2个摄像头,一个2K,一个4k实际都是2k吧,请问另外的2k哪里去了

相关推荐
久绊A1 小时前
Python 基本语法的详细解释
开发语言·windows·python
Hylan_J5 小时前
【VSCode】MicroPython环境配置
ide·vscode·python·编辑器
莫忘初心丶5 小时前
在 Ubuntu 22 上使用 Gunicorn 启动 Flask 应用程序
python·ubuntu·flask·gunicorn
失败尽常态5237 小时前
用Python实现Excel数据同步到飞书文档
python·excel·飞书
2501_904447747 小时前
OPPO发布新型折叠屏手机 起售价8999
python·智能手机·django·virtualenv·pygame
青龙小码农7 小时前
yum报错:bash: /usr/bin/yum: /usr/bin/python: 坏的解释器:没有那个文件或目录
开发语言·python·bash·liunx
大数据追光猿8 小时前
Python应用算法之贪心算法理解和实践
大数据·开发语言·人工智能·python·深度学习·算法·贪心算法
Leuanghing8 小时前
【Leetcode】11. 盛最多水的容器
python·算法·leetcode
xinxiyinhe9 小时前
如何设置Cursor中.cursorrules文件
人工智能·python
诸神缄默不语10 小时前
如何用Python 3自动打开exe程序
python·os·subprocess·python 3