正在将代码从openCV更新为openCV2



我正在尝试在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]))

屏幕截图:默认分辨率和更改后的分辨率

相关内容

  • 没有找到相关文章

最新更新