将代码从openCV更新为openCV2

时间:2015-06-26 15:00:07

标签: python opencv

我正在尝试在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_WIDTH,160);   AttributeError:'builtin_function_or_method'对象没有属性'set'

6 个答案:

答案 0 :(得分:11)

似乎 CV_CAP_PROP_POS_MSEC 和其他类似的类似属性在您安装的Opencv版本中已弃用,以解决问题,例如此属性,将其更改为cv2.CAP_PROP_POS_MSEC,其他类似也是如此。在Opencv 3.1上对我有用

答案 1 :(得分:10)

我遇到了同样的问题,能够使用它:

cap = cv2.VideoCapture(0)

cap.set(cv2.CAP_PROP_FRAME_WIDTH, 160);
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 120);

答案 2 :(得分:7)

试试这个。它会起作用。

self.capture.set(cv2.cv.CV_CAP_PROP_FRAME_WIDTH, 160)

答案 3 :(得分:4)

我删除了.cv.CV_,并且有效。

更改:

cv2.cv.CV_CAP_PROP_FRAME_HEIGHT

收件人:

cv2.CAP_PROP_FRAME_HEIGHT

答案 4 :(得分:1)

您需要处理初始调用返回的实例,而不是类

self.capture.set(cv.CV_CAP_PROP_FRAME_WIDTH, 160)

答案 5 :(得分:0)

此答案是通过结合建议的答案/教程而构建的

使用cv2-从通过网络摄像头捕获的视频中更改帧分辨率

    File dirRoot = rootMicroSd(context);
    if (dirRoot == null) return "";
    File directorio = new File(dirRoot, DefPrefsUtil.getDirImg(context) + "/");
    String referenciaCeros = "";
    for (int i = String.valueOf(referencia).length(); i < 5; i++) {
        referenciaCeros += "0";
    }
    referenciaCeros += String.valueOf(referencia);
    final String finalReferenciaCeros = referenciaCeros;
    File[] allFiles = directorio.listFiles(new FilenameFilter() {
        public boolean accept(File dir, String name) {
            boolean valido = (name.startsWith(finalReferenciaCeros) && (name.endsWith(".jpg") || name.endsWith(".JPG")));
            return valido;
        }
    });
    if (allFiles.length == 0) return "";
    return allFiles[0].getAbsolutePath();

Screenshot: default resolution and changed resolution