Open CV学习记录(十七)—从图上显示某点的坐标

来源:互联网 发布:如何手机淘宝购物 编辑:程序博客网 时间:2024/06/06 05:50
#include<opencv2\opencv.hpp>#include <stdio.h>using namespace cv;void on_mouse(int event, int x, int y, int flags, void* ustc);Mat image;int main(){    /*    src=cvLoadImage("lena.jpg",1);        cvNamedWindow("src",1);        cvSetMouseCallback( "src", on_mouse, 0 );        cvShowImage("src",src);        cvWaitKey(0);         cvDestroyAllWindows();        cvReleaseImage(&src);        */    //VideoCapture capture("E:\\2.mp4");    for (int i=1;i<500;i++)    {        char rowfilename[255];        sprintf(rowfilename, "E:\\2\\a%d.bmp", i);        image = imread(rowfilename);        namedWindow("Image");        if (image.empty())        {            break;        }        setMouseCallback("Image", on_mouse, 0);        imshow("Image", image);        char filename[255];        sprintf(filename, "E:\\2\\img%03d.bmp", i);        imwrite(filename,image);        waitKey(0);    }    return 0;}void on_mouse(int event, int x, int y, int flags, void* ustc){    /*CvFont font;    cvInitFont(&font, CV_FONT_HERSHEY_SIMPLEX, 0.5, 0.5, 0, 1, CV_AA);*/    if (event == CV_EVENT_LBUTTONDOWN)    {        CvPoint pt = cvPoint(x, y);        char temp[16];        sprintf(temp, "(%d,%d)", pt.x, pt.y);        putText(image, temp, pt, FONT_HERSHEY_SCRIPT_SIMPLEX,3,Scalar(0,0,255),3,8);        /*        void cvPutText( CvArr* img, const char* text, CvPoint org, const CvFont* font,CvScalar color );      img:输入图像      text:要显示的字符串      org:第一个字母左下角的坐标      font:指向字体结构的指针      color:文本的颜色.        */        //cvCircle(src, pt, 2, cvScalar(255, 0, 0, 0), CV_FILLED, CV_AA, 0);        /*        定义        void cvCircle( CvArr* img, CvPoint center, int radius, CvScalar color, int thickness=1, int line_type=8, int shift=0 );[1]         img 图像        center 圆心坐标        radius 圆形的半径        color 线条的颜色        thickness 如果是正数,表示组成圆的线条的粗细程度。否则,表示圆是否被填充        line_type 线条的类型。见 cvLine 的描述        shift 圆心坐标点和半径值的小数点位数        */        imshow("Image", image);    }}/*OpenCV中的鼠标响应的函数是setMouseCallback(),可以实现画图的功能。c++: void setMousecallback(const string& winname, MouseCallback onMouse, void* userdata=0)winname:窗口的名字onMouse:鼠标响应函数,回调函数。指定窗口里每次鼠标时间发生的时候,被调用的函数指针。 这个函数的原型应该为void on_Mouse(int event, int x, int y, int flags, void* param);userdate:传给回调函数的参数void on_Mouse(int event, int x, int y, int flags, void* param);event是 CV_EVENT_*变量之一x和y是鼠标指针在图像坐标系的坐标(不是窗口坐标系)flags是CV_EVENT_FLAG的组合, param是用户定义的传递到setMouseCallback函数调用的参数。*/
0 0
原创粉丝点击