始终不能在窗口上显示该像素的颜色值,
无奈的很。
代码
#include "cv.h"
#include "highgui.h"
#include "stdio.h"
// Define our callback which we will install for
// mouse events.
//
void my_mouse_callback(
int event, int x, int y, int flags, void* param
);
bool showingRGB=false;
CvPoint pt;
char* mytext;
void showRGB(IplImage* img, CvPoint pt);
int main( int argc, char** argv ) {
IplImage *frame=NULL;
cvNamedWindow("Video",1);
// cvNamedWindow("Video1",1);
frame=cvLoadImage("D:\\Program Files\\OpenCV\\_make\\test\\Debug\\a.jpg");
IplImage* temp = NULL;//cvCloneImage( frame);
cvSetMouseCallback(
"Video",
my_mouse_callback,
(void*) frame
);
while( 1 ) {
// cvCopyImage( frame, temp );
if(showingRGB) showRGB(frame,pt);
cvShowImage( "Video", frame );
// cvShowImage( "Video1", frame );
if( cvWaitKey( 15 )==27 ) break;
}
cvReleaseImage(&frame);
cvReleaseImage(&temp);
cvDestroyAllWindows();
return 0;
}
void my_mouse_callback(
int event, int x, int y, int flags, void* param )
{
IplImage* img = (IplImage*) param;
switch( event ) {
case CV_EVENT_LBUTTONDOWN: {
showingRGB=false;
pt=cvPoint(x,y);
// pt.x=x;
// pt.y=y;
showingRGB=true;
cvWaitKey(50);
break;
}
case CV_EVENT_LBUTTONUP:{
showingRGB=false;
break;
}
case CV_EVENT_MOUSEMOVE: {
showingRGB = false;
}
break;
}
}
void showRGB(IplImage* img, CvPoint pt)
{
//用来显示文字,初始化字体
CvFont font=cvFont(1);
// cvInitFont( &font, CV_FONT_HERSHEY_COMPLEX,1, 1);
CvScalar s;
s=cvGet2D(img,pt.x,pt.y); // get the (x,y) pixel value
printf("%d ",int(s.val[0]));
// unsigned char R = CV_IMAGE_ELEM(img, unsigned char, pt.x, pt.y*3 + 2);
//itoa(int(s.val[0]),mytext,10);
//cvPutText(img,mytext,cvPoint(pt.x,pt.y),&font,cvScalar(0));
itoa(pt.x,mytext,10);
cvPutText(img,mytext,pt,&font,cvScalar(0));
itoa(pt.y,mytext,10);
cvPutText(img,mytext,cvPoint(pt.x+30,pt.y),&font,cvScalar(0));
}