我正在尝试在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'
答案 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();