learning opencv 4-2

来源:互联网 发布:数据库巡检报告 编辑:程序博客网 时间:2024/05/20 07:50


当鼠标点击图像时,显示对应位置像素的颜色值(BGR):

#include<opencv2\opencv.hpp>using namespace cv;using namespace std;void on_mouse(int event, int x, int y, int flags, void* param);int main(){IplImage* src = cvLoadImage("F:\\happy研\\新建文件夹\\5.jpg");cvNamedWindow("mouse_image");cvSetMouseCallback("mouse_image", on_mouse, (void*)src);cvShowImage("mouse_image", src);cvWaitKey(0);cvDestroyWindow("mouse_image");cvReleaseImage(&src);return 0;}void on_mouse(int event, int x, int y, int flags, void* param){IplImage* src = (IplImage*)param;//终于明白这里为什么要克隆一份图片了,如果在原图上操作,那么之前的像素坐标都会保留在图片上!IplImage* img = cvCloneImage(src);uchar* ptr = NULL;//注意这里定义的label是一个数组char label[20];CvFont font;cvInitFont(&font,CV_FONT_HERSHEY_PLAIN, .8, .8);if (event == CV_EVENT_LBUTTONDOWN){//注意cvGet2D与cvPtr2D的区别ptr = cvPtr2D(img, y, x);sprintf(label, "(%d,%d,%d)", ptr[0], ptr[1], ptr[2]);cvRectangle(img, cvPoint(x, y - 12), cvPoint(x + 100, y + 4), CV_RGB(255, 0, 0), CV_FILLED);cvPutText(img, label, cvPoint(x, y), &font, CV_RGB(255, 255, 0));cvShowImage("mouse_image", img);}}

0 0
原创粉丝点击