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

相关推荐
Python图像识别2 小时前
71_基于深度学习的布料瑕疵检测识别系统(yolo11、yolov8、yolov5+UI界面+Python项目源码+模型+标注好的数据集)
python·深度学习·yolo
千码君20163 小时前
React Native:从react的解构看编程众多语言中的解构
java·javascript·python·react native·react.js·解包·解构
淮北4944 小时前
windows安装minicoda
windows·python·conda
LiJieNiub5 小时前
读懂目标检测:从基础概念到主流算法
人工智能·计算机视觉·目标跟踪
爱喝白开水a5 小时前
LangChain 基础系列之 Prompt 工程详解:从设计原理到实战模板_langchain prompt
开发语言·数据库·人工智能·python·langchain·prompt·知识图谱
默默coding的程序猿7 小时前
3.git的分支携带问题是什么?怎么解决?
java·git·python·svn·gitee·github·intellij-idea
新子y9 小时前
【小白笔记】PyTorch 和 Python 基础的这些问题
pytorch·笔记·python
我是李武涯9 小时前
PyTorch DataLoader 高级用法
人工智能·pytorch·python
每月一号准时摆烂9 小时前
PS基本教学(三)——像素与分辨率的关系以及图片的格式
人工智能·计算机视觉
Lynnxiaowen9 小时前
今天我们开始学习python语句和模块
linux·运维·开发语言·python·学习