के क्लास आधारित कार्यान्वयन को बनाने में परेशानी होने के कारण शीर्षक के अनुसार, मुझे कक्षा आधारित सी ++ संरचना में ओपनसीवी के माउस कॉलबैक फ़ंक्शन को लागू करने में कुछ समस्याएं आ रही हैं। मुझे समझाने की अनुमति दें। मैंने BriskMatching नामक एक क्लास को परिभाषित किया है जिसमें मैंने ओपनसीवी की आवश्यकता वाले सही पैरामीटर के साथ माउसकॉलबैक नामक एक सदस्य फ़ंक्शन बनाया है (कृपया नीचे कोड स्निपेट देखें)।ओपनसीवी के माउस कॉलबैक फ़ंक्शन
**Briskmatching.h**
class BriskMatching
{
public:
BriskMatching();
~BriskMatching();
public:
void mouseCallback(int event, int x, int y, int flags, void *param);
};
यह सब ठीक है लेकिन मेरी समस्या पैदा होती है जब मैं OpenCV के cv::setMouseCallback
समारोह के माध्यम से नामित माउस कॉलबैक समारोह के रूप में इस समारोह सेट करने का प्रयास करता है।
अपने मुख्य समारोह में, मैं BriskMatching briskMatcher कहा जाता है तो जब यह माउस कॉलबैक मैं बहुत तरह यह करने के लिए प्रयास करने के लिए सेट करने के लिए समय ... आता
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
मैं mouseCallback समारोह की घोषणा के बाद से मैं mouseCallback समारोह में कई गैर स्थिर सदस्य चर का उल्लेख के रूप में BriskMatching.h
में static
लेकिन फिर मैं अन्य त्रुटियों की एक पूरी अजीब प्राप्त करके इस त्रुटि से छुटकारा पाने सकता है।
तो मेरे लिए आपका प्रश्न यह है। cv::setMouseCallback
फ़ंक्शन में BriskMatching क्लास में घोषित मेरे माउस कॉलबैक फ़ंक्शन को सही तरीके से पास करने में सक्षम होने के लिए मैं अपने कोड को कैसे संशोधित कर सकता हूं?
उन्नत में आपकी सभी मदद के लिए धन्यवाद!
बिल्कुल सही, धन्यवाद! यह बहुत अच्छा काम करता है, लेकिन मैं इसके पीछे तर्क या यह कैसे काम करता है पूरी तरह से समझ में नहीं आता है। मैं अब कुछ वर्षों से सी ++ में कोडिंग कर रहा हूं, लेकिन मैंने हमेशा प्रकार का सेवन टाला है और इसलिए यह हमेशा मेरे लिए भूरे रंग का क्षेत्र रहा है। मैं अब उन पर पढ़ने जा रहा हूं, और यह समझने की कोशिश करता हूं कि यह सब कैसे काम करता है। – szakeri