// 4-2.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<opencv/cv.h>
#include<opencv/highgui.h>
int a,b;
int showtext=0;
void my_mouse_callback(
int event, int x, int y, int flags, void* param
);
void mouseHandler(
int event, int x, int y, int flags, void* param
);
// A litte subroutine to draw a box onto an image
void showpiexl( IplImage* img,int x,int y)
{
char label[20];
sprintf(label,"(%d, %d, %d)",CV_IMAGE_ELEM(img, uchar, y, 3*x),
CV_IMAGE_ELEM(img, uchar, y, 3*x+1),CV_IMAGE_ELEM(img, uchar, y, 3*x+2));
CvFont font;
cvInitFont(&font, CV_FONT_VECTOR0,1, 1, 0, 1, 8);
cvPutText(img,label,cvPoint(x,y),&font,CV_RGB(255,255,255));
cvShowImage("TEXT",img);
}
int main()
{
IplImage* img=cvLoadImage("C:\\lena.jpg");
cvNamedWindow("TEXT",CV_WINDOW_AUTOSIZE);
cvSetMouseCallback("TEXT",my_mouse_callback,(void*)img);
cvShowImage("TEXT",img);
cvWaitKey(0);
cvDestroyWindow("TEXT");
cvReleaseImage(&img);
}
void my_mouse_callback(int event, int x, int y, int flags, void* param )
{
IplImage* img0;
img0 = (IplImage*) param;
//img1 = cvCloneImage(img0);
switch( event )
{
case CV_EVENT_LBUTTONDOWN:
{
showpiexl(img0,x,y);
}
break;
}
}
void mouseHandler(int event, int x, int y, int flags, void* param)
{
IplImage* img0, * img1;
CvFont font;
uchar* ptr;
char label[20];
img0 = (IplImage*) param;
img1 = cvCloneImage(img0);
cvInitFont(&font, CV_FONT_HERSHEY_PLAIN, .8, .8, 0, 1, 8);
if (event == CV_EVENT_LBUTTONDOWN)
{
/* read pixel */
ptr = cvPtr2D(img1, y, x, NULL);
/*
* display the BGR value
*/
sprintf(label,"(%d, %d, %d)", ptr[0], ptr[1], ptr[2]);
cvRectangle(
img1,
cvPoint(x, y - 12),
cvPoint(x + 100, y + 4),
CV_RGB(255, 0, 0),
CV_FILLED,
8, 0
);
cvPutText(
img1,
label,
cvPoint(x, y),
&font,
CV_RGB(255, 255, 0)
);
cvShowImage("TEXT", img1);
}
}
《学习opencv》第四章课后习题2
最新推荐文章于 2020-04-02 18:02:41 发布