Mat и setMouseCallback функция - PullRequest
       35

Mat и setMouseCallback функция

4 голосов
/ 18 ноября 2011

У меня есть my_mouse_callback пример функции, которая работает с IplImage *:

void my_mouse_callback(int event, int x, int y, int flags, void* param) 
{
IplImage* image = (IplImage*) param;
switch( event ) 
{
    case CV_EVENT_LBUTTONDOWN: 
        drawing_box = true;
        box = cvRect(x, y, 0, 0);
        break;
        ...

        draw_box(image, box);
        break;
}

, которая реализована в main следующим образом:

cvSetMouseCallback(Box Example,my_mouse_callback,(void*) image);

Проблема в том, чтоВ моем коде я использую объект Mat, и он не может быть перенесен таким образом в функцию setMouseCallback.

Я ищу решение, которое не включает перенос Mat в IplImage *.

Или, если решения не существует, как я могу правильно конвертировать Mat в IplImage *?

Я уже пробовал это с этим кодом из документации opencv:

Mat I;
IplImage* pI = &I.operator IplImage();

, и он не работал.

Ответы [ 2 ]

3 голосов
/ 19 ноября 2011

Насколько я могу судить, нет эквивалента этой функции в интерфейсе C ++.

Но вы можете преобразовать cv::Mat в IplImage* , например , и наоборот:

cv::Mat mat(my_IplImage);
2 голосов
/ 20 декабря 2012

Почему вы не можете перенести Mat в функцию MouseCallback?Вы только что сделали это с IplImage.Маты просто указатели.Вот как я это сделал.

void onMouse(int event, int x, int y, int flags, void* param)
{
    Mat src;
    src = *((Mat*)param);

   ...

и назвал это так в моем основном цикле:

 setMouseCallback("source", onMouse, &src);
...