opencv第四章

2.创建一个程序,使其读入并显示图片。当前用户鼠标点击图像时,获得图像的对应像素的颜色值(BGR),并在图像上点击鼠标处用文本将颜色显示出来。

对于练习在三幅画中任意地方点击鼠标,将当前图像的坐标显示于点击鼠标处。

#include <cv.h>
#include <highgui.h>
void my_mouse_callback(int event, int x, int y, int flag, void* param);

int main()
{
    IplImage *img = cvLoadImage("3.jpg", 1);
    assert(img);
    cvNamedWindow("main", 1);
    cvSetMouseCallback("main", my_mouse_callback, img);
    my_mouse_callback(0, 0, 0, 0, img);
    cvWaitKey();
    cvReleaseImage(&img);
    cvDestroyWindow("main");
}
void my_mouse_callback(int event, int x, int y, int flag, void* param)
{
    IplImage *image = (IplImage*)param;
    IplImage *image1 = cvCloneImage(image);
    CvFont font;
    uchar *ptr;
    char label[20]; 
    cvInitFont(&font, CV_FONT_HERSHEY_PLAIN, 1.0, 1.0, 0, 1, 8); //对于显示像素的字体进行设定
    if (event == CV_EVENT_LBUTTONDOWN)
    {
        ptr = cvPtr2D(image1, y, x, NULL);
        sprintf(label, "(%d,%d)", y, x);
        cvRectangle(image1, cvPoint(x, y - 12), cvPoint(x + 100, y + 4), CV_RGB(255, 255, 255), CV_FILLED, 8, 0);
        cvPutText(image1, label,cvPoint(x, y), &font, CV_RGB(0, 0, 0));
        cvShowImage("main", image1);
    }
}

 

posted on 2016-04-05 15:39  `Elaine  阅读(168)  评论(0编辑  收藏  举报

导航