opencv利用鼠标获取像素值

来源:互联网 发布:电脑美图软件 编辑:程序博客网 时间:2024/06/15 23:38

参考:opencv利用鼠标获取像素值

原文只获取了彩色图像rgb值,我小小的改动了一下,使能够自适应获取像素值

#include <stdlib.h>#include <iostream>#include <string>#include <opencv/cv.h>#include <opencv/highgui.h>using namespace std;void mouseHandler(int event, int x,int y ,int flags,void *p){    IplImage *img1;    img1=cvCloneImage((IplImage*)p);    CvFont font;    uchar *ptr;    cvInitFont (&font,CV_FONT_HERSHEY_PLAIN,0.8,0.8,0,1,8);    if ((img1->nChannels == 1)&&(event==CV_EVENT_LBUTTONDOWN)){        char label[50];        ptr=cvPtr2D(img1, y,x,NULL);        sprintf(label, "(%d, %d: %d)", x, y, ptr[0]);        std::cout << label << endl;        cvRectangle(img1, cvPoint(x,y-12),cvPoint(x+100, y+4),            cvScalar(255),CV_FILLED, 8,0);        cvPutText(img1,label,cvPoint(x,y),&font,cvScalar(0) );        cvShowImage("src",img1);    }    else if(event==CV_EVENT_LBUTTONDOWN){        char label[50];            ptr=cvPtr2D(img1, y,x,NULL);        sprintf(label, "(%d, %d: %d, %d, %d)", x, y, ptr[0],ptr[1],ptr[2]);        cout << label <<endl;        cvRectangle(img1, cvPoint(x,y-12),cvPoint(x+150, y+4),            CV_RGB(255,0,0),CV_FILLED, 8,0);        cvPutText(img1,label,cvPoint(x,y),&font,CV_RGB(255,255,255) );        cvShowImage("src",img1);    }}int main(){    IplImage *src;    src=cvLoadImage("C:/Users/robot/Desktop/1.jpg",1);    assert(src);    cvNamedWindow("src", 1);    cvSetMouseCallback("src", mouseHandler, (void*)src);    mouseHandler(0,0,0,0,src);    cvShowImage("src",src);    cvWaitKey(0);    return 0;}


1 0