2011-11-03 64 views
1

我正在使用cvSetMouseCallback來跟蹤鼠標點擊。不過,我需要傳入多個參數給傳入cvSetMouseCallback的函數。然而,cvSetMouseCallback只接受一個參數來將數據傳遞給它所調用的函數。我如何用多個參數來做到這一點?OpenCV鼠標調用?

例如:

cvSetMouseCallback ("Window", function, argumentPassedintofunction); 

void function (int event, int x, int y, int flags, void* param, CvRect *drawnRect, IplImage *skinSegment, IplImage *colourSpaceImg, CvHistogram *skin, IplImage *planes []) 

{ 

} 

所以你看,我需要在多個參數傳遞給函數(),但cvSetMouseCallback只允許一個參數被傳入

我不想要訪問鼠標通話的操作系統(所以不處理和任何,我嚴格要堅持opencv)

也使參數全局變量不是一個選項。

+0

難道你不能創建一個結構並傳遞它嗎? – NickLH

回答

0

你可以使函數接受一個包含所有參數的結構。

typedef struct func_params_ { 
    int event; 
    int x; 
    int y; 
    int flags; 
    void* param; 
    CvRect* drawnRect; 
    ...... 
} func_params 
+0

完美的感謝:) 只有一件事 - 你知道如何放在一個單獨的文件類?與結構是一樣的嗎?或者他們只是放在主 通常做什麼?對不起,我通常不會使用結構 – user1017485

+0

+1來簡單回答 –