首页 文章

Python OpenCV访问网络摄像头的最大分辨率

提问于
浏览
9

我正在尝试使用导入OpenCV的python代码从我的网络摄像头获取图像 . 代码如下:

import sys
sys.path.append("C:\\opencv\\build\\python\\2.7")
import cv2
import cv2.cv as cv
import time

# Set resolution
cap = cv2.VideoCapture(0)
print "Frame default resolution: (" + str(cap.get(cv.CV_CAP_PROP_FRAME_WIDTH)) + "; " + str(cap.get(cv.CV_CAP_PROP_FRAME_HEIGHT)) + ")"
cap.set(cv.CV_CAP_PROP_FRAME_WIDTH, 800)
cap.set(cv.CV_CAP_PROP_FRAME_HEIGHT, 600)
print "Frame resolution set to: (" + str(cap.get(cv.CV_CAP_PROP_FRAME_WIDTH)) + "; " + str(cap.get(cv.CV_CAP_PROP_FRAME_HEIGHT)) + ")"

# Acquire frame
capture = cv.CreateCameraCapture(0)
img = cv.QueryFrame(capture)

代码工作正常,但相机默认分辨率为640x480,我的代码似乎只能设置低于此值的分辨率值 . 例如,我可以将图像大小设置为320x240,但我无法将其更改为800x600 . 我没有出现错误:只需将分辨率设置为默认值(640x480),因为我尝试将其设置为更高的值 .

我正在使用的相机(没有其他网络摄像头连接到计算机)是QuickCam V-UBK45:使用Logitech提供的软件,我能够以全分辨率(1280x960)和所有中间分辨率(例如800x600)拍摄照片 .

因此,硬件支持这些帧大小,但我的代码无法访问它们 .

有谁知道我能做什么?

4 回答

  • 5

    我使用不同的分辨率通过循环来设置List of common resolutions的图像分辨率

    def set_res(cap, x,y):
        cap.set(cv.CV_CAP_PROP_FRAME_WIDTH, int(x))
        cap.set(cv.CV_CAP_PROP_FRAME_HEIGHT, int(y))
        return str(cap.get(cv.CV_CAP_PROP_FRAME_WIDTH)),str(cap.get(cv.CV_CAP_PROP_FRAME_HEIGHT))
    

    this是我得到的 .

    似乎cv或我的相机只允许某些分辨率 .

    • 160.0 x 120.0

    • 176.0 x 144.0

    • 320.0 x 240.0

    • 352.0 x 288.0

    • 640.0 x 480.0

    • 1024.0 x 768.0

    • 1280.0 x 1024.0

  • 8

    I got it to work, so this post is for others experiencing the same problem:

    我也在使用Logitech C270 . 出于某种原因,即使网络摄像头支持1280x720,它也只会显示640x480 . 我的笔记本电脑中的内置网络摄像头仍然存在同样的问题 .

    如果我在代码中将其设置为800x600,则显示为640x480 . 但是,如果我将其设置为1024x768则变为800x600 . 如果我将它设置为像2000x2000这样愚蠢的东西,它就会变成1280x720 .

    这是在OpenCV 3.0上的C,但也许它也适用于Python .

  • 0

    对于cv2,只需更改为此 .

    cap.set(cv2.CAP_PROP_FRAME_WIDTH, 800)
        cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 600)
    
  • 2

    我和你有同样的问题,我不能在 opencv 中获得更高的分辨率"application" . 但是使用罗技软件,我能够以720p录制视频(摄像机C270) . 经过几天的研究,我得到了与@break相同的解释,他们限制了驱动程序中的分辨率 . 我放弃了,将购买一个不同的非罗技,一个...

相关问题