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哪里去了

相关推荐
遨游xyz1 小时前
排序-快速排序
开发语言·python·排序算法
iFeng的小屋1 小时前
【2026年新版】Python根据小红书关键词爬取所有笔记数据
笔记·爬虫·python
m0_561359671 小时前
使用Python处理计算机图形学(PIL/Pillow)
jvm·数据库·python
LeonDL1682 小时前
基于YOLO11深度学习的衣物识别系统【Python源码+Pyqt5界面+数据集+安装使用教程+训练代码】【附下载链接】
人工智能·python·pyqt5·yolo数据集·yolo11数据集·yolo11深度学习·衣物识别系统
傻啦嘿哟2 小时前
Python操作PDF页面详解:删除指定页的完整方案
开发语言·python·pdf
serve the people2 小时前
python环境搭建 (十三) tenacity重试库
服务器·python·php
ASS-ASH2 小时前
AI时代之向量数据库概览
数据库·人工智能·python·llm·embedding·向量数据库·vlm
乔江seven2 小时前
【Flask 进阶】3 从同步到异步:基于 Redis 任务队列解决 API 高并发与长耗时任务阻塞
redis·python·flask
pchaoda2 小时前
基本面因子计算入门
python·matplotlib·量化
Wpa.wk3 小时前
接口自动化测试 - 请求构造和响应断言 -Rest-assure
开发语言·python·测试工具·接口自动化