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

フレームと呼ばれるマットに画像を配置し、次のようにします。

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 に答える