1

我是 OpenCV 的初学者,想在控制台中打印我通过单击定义的像素(RGB 格式)的特定值。

经过一些搜索后,我设法打印了我在图像上单击的坐标。

如果有人知道该怎么做,请修改我正在使用的代码:

void mouseEvent (int evt, int x, int y, int flags, void* param)
{                    
     if (evt == CV_EVENT_LBUTTONDOWN)
     { 
          printf("%d %d\n",x ,y );  
     }         
}

这就是我用来调用该函数的方法:

cvSetMouseCallback("blah blah", mouseEvent, 0);
4

1 回答 1

7

将您的图像放在称为框架的 Mat 中,然后:

namedWindow("test");
cvSetMouseCallback("test", mouseEvent, &frame);

char key = 0;
while ((int)key != 27) {
    imshow("test", frame);
    key =  waitKey(1);
}

其中 mouseEvent 定义为:

void mouseEvent(int evt, int x, int y, int flags, void* param) {                    
    Mat* rgb = (Mat*) param;
    if (evt == CV_EVENT_LBUTTONDOWN) { 
        printf("%d %d: %d, %d, %d\n", 
        x, y, 
        (int)(*rgb).at<Vec3b>(y, x)[0], 
        (int)(*rgb).at<Vec3b>(y, x)[1], 
        (int)(*rgb).at<Vec3b>(y, x)[2]); 
    }         
}
于 2013-02-14T14:23:35.133 回答