我正在尝试在python中将一些代码从openCV更新为openCV2。原始代码如下:
self.capture = cv.CaptureFromCAM(0)
cv.SetCaptureProperty( self.capture, cv.CV_CAP_PROP_FRAME_WIDTH, 160 );
cv.SetCaptureProperty( self.capture, cv.CV_CAP_PROP_FRAME_HEIGHT, 120 );
我为openCV2编写的代码是:
self.capture = cv2.VideoCapture(0)
cv2.VideoCapture.set( CV_CAP_PROP_FRAME_WIDTH, 160 );
cv2.VideoCapture.set( CV_CAP_PROP_FRAME_HEIGHT, 120 );
然而,这不起作用,我得到了一个错误,说:
cv2.VideoCapture.set(CV_CAP_PROP_FRAME_WITH,160);AttributeError:"builtin_function_or_method"对象没有属性"set"
我遇到了同样的问题,能够使用
cap = cv2.VideoCapture(0)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 160);
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 120);
在您安装的Opencv版本中,似乎不赞成使用CV_CAP_PROP_POS_MSEC和其他类似的属性,为了解决这个问题,例如,将它更改为cv2.CAP_PROP_POS_MSEC
和类似的其他属性。在Opencv 3.1 上运行良好
试试这个。它会起作用的。
self.capture.set(cv2.cv.CV_CAP_PROP_FRAME_WIDTH, 160)
我删除了.cv.CV_
,它起了作用。
更改:
cv2.cv.CV_CAP_PROP_FRAME_HEIGHT
至:
cv2.CAP_PROP_FRAME_HEIGHT
您需要处理初始调用返回的实例,而不是类
self.capture.set(cv.CV_CAP_PROP_FRAME_WIDTH, 160)
这个答案是使用建议的答案/教程组合构建的
使用cv2-更改通过网络摄像头捕获的视频的帧分辨率
import cv2
import time
cam = cv2.VideoCapture(0)
print "Frame default resolution: (" + str(cam.get(cv2.CAP_PROP_FRAME_WIDTH)) + "; " + str(cam.get(cv2.CAP_PROP_FRAME_HEIGHT)) + ")"
#set Frame resolution to 1280; 720
cam.set(cv2.CAP_PROP_FRAME_WIDTH, 1280)
cam.set(cv2.CAP_PROP_FRAME_HEIGHT, 720)
print "Frame resolution set to: (" + str(cam.get(cv2.CAP_PROP_FRAME_WIDTH)) + "; " + str(cam.get(cv2.CAP_PROP_FRAME_HEIGHT)) + ")"
r, frame = cam.read()
print('Resolution: ' + str(frame.shape[0]) + ' x ' + str(frame.shape[1]))
屏幕截图:默认分辨率和更改后的分辨率