OpenCV的,如何将参数传递到cv2.TrackerMedianFlow_create功能?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenCV的,如何将参数传递到cv2.TrackerMedianFlow_create功能?相关的知识,希望对你有一定的参考价值。

我试图创建MEDIANFLOW跟踪器使用的OpenCV的Python与Python3.6 OpenCV3.3。我需要根据OpenCV的docs这个页面的一些参数传递到构造函数。

问题是我不知道如何使用正确的参数传递到这个功能呢?我无法找到任何关于它的信息。

我做什么(和它的作品):

tracker = cv2.TrackerMedianFlow_create()

我想做的事:

tracker = cv2.TrackerMedianFlow_create(maxLevel=3)

但它不工作,并给我一个错误:

SystemError: <built-in function TrackerMedianFlow_create> returned NULL without setting an error

你能帮忙吗?

答案

我通过搜索产生的CMake中间代码/编译做OpenCV的3.3为Python 3.5的时候,只是找不到设置cv2.TrackerXXX参数的方法。

modules/python3/pyopencv_generated_funcs.h,我觉得这个功能:

static PyObject* pyopencv_cv_TrackerMedianFlow_create(PyObject* , PyObject* args, PyObject* kw)

    using namespace cv;

    Ptr<TrackerMedianFlow> retval;

    if(PyObject_Size(args) == 0 && (kw == NULL || PyObject_Size(kw) == 0))
    
        ERRWRAP2(retval = cv::TrackerMedianFlow::create());
        return pyopencv_from(retval);
    

    return NULL;

这就是说,你水湿传递任何参数cv::TrackerMedianFlow_create()

modules/python3/pyopencv_generated_types.h,我觉得这是一个:

static PyGetSetDef pyopencv_TrackerMedianFlow_getseters[] =

    NULL  /* Sentinel */
;

这就是说,你没有办法在默认情况下,更改Python包装参数除非你修改源代码并重新编译。

另一答案

您可以通过FileStorage界面自定义跟踪参数。

import cv2

# write
tracker = cv2.TrackerMedianFlow_create()
tracker.save('params.json')

# write (another way)
fs = cv2.FileStorage("params.json", cv2.FileStorage_WRITE)
tracker.write(fs)
fs.release()

# read
tracker2 = cv2.TrackerMedianFlow_create()
fs = cv2.FileStorage("params.json", cv2.FileStorage_READ)
tracker2.read(fs.getFirstTopLevelNode())

以上是关于OpenCV的,如何将参数传递到cv2.TrackerMedianFlow_create功能?的主要内容,如果未能解决你的问题,请参考以下文章

如何将函数捕获的帧从另一个库传递给 OpenCV 函数?

如何在 OpenCV 中显示流图像?

Android NDK将参数传递给本机方法

我应该如何将指向成员函数的指针传递给 OpenCV 中的 setMouseCallback?

Opencv将Mat从Android传递到JNI错误

矩阵的简单传递,即。 cv::Mat 到 OpenCV2.4 中的函数