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

相关推荐
ZZHow10241 小时前
02OpenCV基本操作
python·opencv·计算机视觉
计算机学长felix1 小时前
基于Django的“酒店推荐系统”设计与开发(源码+数据库+文档+PPT)
数据库·python·mysql·django·vue
站大爷IP1 小时前
Python随机数函数全解析:5个核心工具的实战指南
python
悟乙己2 小时前
使用 Python 中的强化学习最大化简单 RAG 性能
开发语言·python·agent·rag·n8n
max5006002 小时前
图像处理:实现多图点重叠效果
开发语言·图像处理·人工智能·python·深度学习·音视频
AI原吾2 小时前
玩转物联网只需十行代码,可它为何悄悄停止维护
python·物联网·hbmqtt
云动雨颤2 小时前
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
python·单元测试
SunnyDays10112 小时前
Python 实现 HTML 转 Word 和 PDF
python·html转word·html转pdf·html转docx·html转doc
爆改模型3 小时前
【ICCV2025】计算机视觉|即插即用|ESC:颠覆Transformer!超强平替,ESC模块性能炸裂!
人工智能·计算机视觉·transformer
跟橙姐学代码3 小时前
Python异常处理:告别程序崩溃,让代码更优雅!
前端·python·ipython