¿OpenCV usa el mouse para dibujar líneas rectas en la imagen de video MFC como se muestra a continuación?
Hola, eres así:
#include
#include
# incluir
#pragma comentario( lib, "cv.lib")
#pragma comentario( lib, "cxcore.lib" )
#pragma comentario( lib, "highgui.lib" )
IplImage* src = 0;
IplImage* dst = 0;
void on_mouse( int evento, int x, int y, int flags, void* ustc)
{
estático CvPoint pre_pt = {-1,-1}
estático; CvPoint cur_pt = {-1,-1};
fuente CvFont
cvInitFont(&font, CV_FONT_HERSHEY_SIMPLEX, 0.5, 0.5, 0, 1, CV_AA). p > char temp[16];
if( evento == CV_EVENT_LBUTTONDOWN )
{
cvCopy(dst,src); > sprintf(temp,"(%d,%d)",x,y);
pre_pt = cvPoint(x,y
cvPutText(src,temp, pre_pt); , &font, cvScalar(0,0, 0, 255));
cvCircle( src, pre_pt, 3,cvScalar(255,0,0,0) ,CV_FILLED, CV_AA, ); p >
cvShowImage( "src", src );
cvCopy(src,dst);
}
else if( evento == CV_EVENT_MOUSEMOVE && (flags & CV_EVENT_FLAG_LBUTTON))
{
cvCopy(dst,src);
sprintf(temp,"(%d,%d)", x ,y
cur_pt = cvPoint(x,y);
cvPutText(src,temp, cur_pt, &font, cvScalar(0,0, 0, 255));
cvLine(src, pre_pt, cur_pt, cvScalar(0,255,0,0), 1, CV_AA, 0
cvShowImage( "src",
src );
}
else if( evento == CV_EVENT_LBUTTONUP )
{
sprintf(temp,"(%d, %d)",x,y);
cur_pt = cvPoint(x,y);
cvPutText(src,temp, cur_pt, &font, cvScalar(0,0, 0 , 255));
cvCircle( src, cur_pt, 3,cvScalar(255,0,0,0) ,CV_FILLED, CV_AA, 0
cvLine( src, pre_pt); , cur_pt, cvScalar(0,255,0,0), 1, CV_AA, 0
cvShowImage( "src", src
cvCopy(src,dst); /p>
}
}
int main()
{
src=cvLoadImage("lena.jpg" ,1);
dst=cvCloneImage(src);
cvNamedWindow("src",1
cvSetMouseCallback( "src", on_mouse, 0);
cvShowImage("src",src);
cvWaitKey(0);
cvDestroyAllWindows(); &src);
cvReleaseImage(&dst);
devuelve 0;