タイトルが示すように、OpenCV の mouseCallback 関数をクラス ベースの C++ 構造に実装する際に問題が発生しています。説明させてください。BriskMatching という名前のクラスを定義しました。このクラスでは、OpenCV が必要とする正しいパラメーターを使用して mouseCallback という名前のメンバー関数を作成しました (以下のコード スニペットを参照してください)。
**Briskmatching.h**
class BriskMatching
{
public:
BriskMatching();
~BriskMatching();
public:
void mouseCallback(int event, int x, int y, int flags, void *param);
};
これで問題ありませんが、この関数を OpenCV の関数を介して指定されたマウス コールバック関数として設定しようとすると、問題が発生しcv::setMouseCallback
ます。
私のメイン関数では、briskMatcher と呼ばれる BriskMatching クラスのインスタンスを作成し、マウスのコールバックを設定するときが来たら、そのようにしようとします...
cv::setMouseCallback("Matches", BriskMatching::mouseCallback, &matchesImg);
残念ながら、これはエラーをスローします。
Error 3 error C3867: 'BriskMatching::mouseCallback': function call missing argument list; use '&BriskMatching::mouseCallback' to create a pointer to member c:\users\mobilef\documents\visual studio 2010\projects\opencv_objtracking\opencv_briskmatching\main.cpp 54 1 OpenCV_BriskMatching
static
のようにmouseCallback 関数を宣言することでこのエラーを取り除くことができましたが、mouseCallback 関数BriskMatching.h
で多くの非静的メンバー変数を参照しているため、他のエラーが大量に発生します。
だから皆さんへの私の質問はこれです。BriskMatching クラス内で宣言された mouseCallback 関数を関数に適切に渡すことができるようにするには、コードをどのように変更すればよいcv::setMouseCallback
ですか?
高度なご協力ありがとうございます。