當前位置:編程學習大全網 - 編程語言 - OpenCV利用鼠標在如下圖所示的MFC視頻圖像上畫直線?

OpenCV利用鼠標在如下圖所示的MFC視頻圖像上畫直線?

您好,您這樣:

#include <cv.h>

#include <highgui.h>

#include <stdio.h>

#pragma comment( lib, "cv.lib" )

#pragma comment( lib, "cxcore.lib" )

#pragma comment( lib, "highgui.lib" )

IplImage* src = 0;

IplImage* dst = 0;

void on_mouse( int event, int x, int y, int flags, void* ustc)

{

static CvPoint pre_pt = {-1,-1};

static CvPoint cur_pt = {-1,-1};

CvFont font;

cvInitFont(&font, CV_FONT_HERSHEY_SIMPLEX, 0.5, 0.5, 0, 1, CV_AA);

char temp[16];

if( event == 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, 0 );

cvShowImage( "src", src );

cvCopy(src,dst);

}

else if( event == 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( event == 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);

}

}

int main()

{

src=cvLoadImage("lena.jpg",1);

dst=cvCloneImage(src);

cvNamedWindow("src",1);

cvSetMouseCallback( "src", on_mouse, 0 );

cvShowImage("src",src);

cvWaitKey(0);

cvDestroyAllWindows();

cvReleaseImage(&src);

cvReleaseImage(&dst);

return 0;

}

  • 上一篇:以北京霧霾為主題,寫壹則環境保護主題的廣播廣告腳本.
  • 下一篇:如何實現linux下多線程之間的互斥與同步
  • copyright 2024編程學習大全網