2017-12-08 15 views
0

私はOpenCV3.3でMEDIANFLOWトラッカーを作成しようとしていますが、opencv-pythonをPython3.6で使用しています。このページのOpenCV docsに従って、コンストラクタに引数を渡す必要があります。OpenCV、cv2.TrackerMedianFlow_create関数にパラメータを渡すには?

問題は、使用可能な引数をこの関数に正しく渡す方法がわかりません。私はそれに関する情報を見つけることができませんでした。私は何

(と、それは動作します):私は何をしたいか

tracker = cv2.TrackerMedianFlow_create() 

tracker = cv2.TrackerMedianFlow_create(maxLevel=3) 

しかし、それは仕事と私にエラーを与えていない:

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

お手伝いできますか?

+1

リンクしたドキュメントは、params *構造体のコンストラクタ*です。私はそれを行う方法をテストするために3.3を持っていませんが、 'TrackeMedianFlowr :: Params()'オブジェクトをインスタンス化し、*その*オブジェクトを 'TrackerMedianFlow_create()'に渡す必要があります。 [TrackerMedianFlow() '](https://docs.opencv.org/3.3.0/d7/d86/classcv_1_1TrackerMedianFlow.html)を確認して、コンストラクタが' TrackerMedianFlow :: Params() 'だけを受け入れることを確認してください。オブジェクト。 –

答えて

1

OpenCV 3.3 for Python 3.5をコンパイルするときにcmake/makeによって生成された中間コードを検索すると、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

、私はこの1つを見つける:あなたがソースコードを修正し、それを再コンパイルしない限り

static PyGetSetDef pyopencv_TrackerMedianFlow_getseters[] = 
{ 
    {NULL} /* Sentinel */ 
}; 

これは言って、あなたは、デフォルトでPythonラッパーのためのパラメータを変更する方法がありません。

+0

ありがとうございます。残念ながら、それはあなたが言うように思えます。私は他の方法を見つけるでしょう。 –

関連する問題