正如標題所示,我在基於類的C++結構中實現OpenCV的mouseCallback函數時遇到了一些麻煩。請允許我解釋一下。我定義了一個名爲BriskMatching的類,其中我使用OpenCV需要的正確參數(請參閱下面的代碼片段)創建了一個名爲mouseCallback的成員函數。無法創建基於類的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然後當談到時間設置鼠標回調我試圖做這樣的...
cv::setMouseCallback("Matches", BriskMatching::mouseCallback, &matchesImg);
不幸的是,這將引發的BriskMatching類的一個實例一個錯誤。
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
我可以聲明mouseCallback功能static
在BriskMatching.h
但後來我得到其他錯誤的整體失衡,因爲我指的是很多非靜態成員變量在mouseCallback功能擺脫這種錯誤的。
所以我對你們的問題是這樣的。我應該如何修改我的代碼,以便能夠正確地將在BriskMatching類中聲明的mouseCallback函數傳遞給cv::setMouseCallback
函數?
感謝您的高級幫助!
完美,謝謝!它很好用,但我不完全理解它背後的邏輯或它的工作原理。我已經使用C++編寫了幾年,但我一直避免使用類型轉換,所以對我來說它總是有點灰色地帶。我現在要去閱讀它們,並試圖瞭解這一切如何運作。 – szakeri