• 大小: 4KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-06-06
  • 语言: C/C++
  • 标签: OPENCV  

资源简介

使用 OpenCV 装入一幅彩色图像,并显示该图像。然后在源图像 窗口中使用鼠标选取一个矩形区域(可通过两次按下鼠标左键选取矩形的 两个对角顶点来实现),并在结果图像窗口中显示源图像中被选取的部分。

资源截图

代码片段和文件信息

#include 
#include 
#include 
 
IplImage* src = 0; 
IplImage* tmp = 0; 
IplImage* tmp1 = 0;
IplImage* org = 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)&&(flags) )//鼠标左键按下时

sprintf(temp“(%d%d)“xy);//格式化字符串
pre_pt = cvPoint(xy);//获取当前点坐标值
cvPutText(srctemp pre_pt &font cvScalar(00 0 255));//在图像是打印字符
cvCircle( src pre_pt 2cvScalar(255000) CV_FILLED CV_AA 0 );//在图像上画圆
cvShowImage( “src“ src );
//cvCopy(srctmp);//这句有没有,就是单目标和多目标的问题
}
else if( (event == CV_EVENT_MOUSEMOVE) && (flags & CV_EVENT_LBUTTONDOWN))
{//鼠标移动并且鼠标左键按下
sprintf(temp“(%d%d)“xy);//格式化字符串
cur_pt = cvPoint(xy);//获取当前点坐标值
cvPutText(srctemp cur_pt &font cvScalar(00 0 255));//在图像是打印字符
cvRectangle(src pre_pt cur_pt cvScalar(025500) 2 8 0 );//在图像上画矩形
cvShowImage( “src“ src );
cvCopy(tmpsrc);//将img复制到临时图像tmp上,用于实时显示
}
else if( event == CV_EVENT_LBUTTONUP )
{//鼠标左键弹起
sprintf(temp“(%d%d)“xy);//字体格式化
cur_pt = cvPoint(xy);//获取当前点坐标值
cvPutText(srctemp cur_pt &font cvScalar(00 0 255));//在图像是打印字符
cvCircle( src cur_pt 2cvScalar(255000) CV_FILLED CV_AA 0 );//在图像上画圆
cvRectangle( src pre_pt cur_pt cvScalar(025500) 2 8 0 );//在图像上画矩形
cvShowImage( “src“ src );
 
/******************************************************************/
int width=abs(pre_pt.x-cur_p

评论

共有 条评论