【发布时间】:2013-10-27 04:53:26
【问题描述】:
我正在尝试使用导入 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:使用罗技提供的软件,我能够以全分辨率 (1280x960) 和所有中间分辨率 (例如 800x600)。
因此,硬件支持这些帧大小,但我的代码无法访问它们。
有人知道我能做什么吗?
【问题讨论】:
-
相机是否在其他应用程序中捕捉 640x480 的视频?
-
@goncalopp 所说的让我想到,他们可能会限制驱动程序中 视频流 (带宽)的分辨率,而他们的应用程序仍然能够采用 单张更高分辨率的照片。
-
你知道 cv2 中的代码吗,就像不要混合 cv 和 cv2。有什么想法吗?
标签: python opencv webcam resolution logitech