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); } }