全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
在图像上绘制出矩形并标出起点的坐标 涉及到两方面的内容:1. 用鼠标画出矩形。2.在图像上绘制出点的坐标 1. 用鼠标绘制矩形,涉及到鼠标的操作,opencv 中有鼠标事件的介绍。需要用到两个函 数: 回调函数 CvMouseCallback 和注册回调函数 cvSetMouseCallback. 当回调函数被调用时,opencv 会传入合适的值,当鼠标有动作时,有所反应,比如画 线,描点。 void CvMouseCallback(int event,int x,int y,int flags,void * param); event 为鼠标事件类型,值为以下一种: CV_EVENT_MOUSEMOVE,CV_EVENT_LBUTTONDOWN,CV_EVENT_RBUTTONDOWN,CV_EVE NT_MBUTTONDOWN,CV_EVENT_RBUTTONUP,CV_EVENT_LBUTTONUP,CV_EVENT_MBUTTO NUP,CV_EVENT_LBUTTONBLCLK,CV_EVENT_RBUTTONBLCLK,CV_EVENT_MBUTTONBLCLK. x,y 表示事件发生时鼠标位置的 x,y 坐标值。 flags 的值表示了别的键如 ctrl,shift 键是否被触发。 Param 可以以任何结构方式传递额外的参数信息。 void cvSetMouseCallback(const char* window_name,CvMouseCallback on_mouse,void* param); 第一个参数指定了回调函数需要注册到的窗口,也就是产生事件的窗口。第二个参数为回 调函数,第三个参数用来传递额外信息给回调函数中的 param 参数。 2. 在图像上绘出点的坐标涉及到 opencv 中的绘图中的字体和文字。主要有函数 cvPutText 和 cvInitFont. void cvPutText(CvArr* img,const char* text,CvPoint origin,const CvFont* font,CvScalar clolor); 这个函数可以在图像上输出一些文本。 text 所指向的文本将打印到图像上。若将点的坐标打印到图像上,就需要把点的坐标 变成字符串,要用到 sprintf 函数。 Origin 为指定文本框的左下角位置。 Void cvInitFont(CvFont* font,int font_face,double hscale,double vscale,double shear=0,int thinckness=1,int line_type=8); hscale 和 vscale 表示字体的高度和宽度。Shear=0.0 字体不倾斜, shear=1.0,字体倾斜。 Opencv 程序和结果如下所示。 #include #include #include #include using namespace std; void my_mouse_callback(int event,int x,int y,int flags,void* param); CvRect box; bool drawing_box=false; void draw_box(IplImage* img,CvRect rect) cvRectangle(img,cvPoint(box.x,box.y),cvPoint(box.x+box.width,box.y+box.height),cvScalar (0x00,0x00,0xff); CvFont font; int main() cvInitFont( box=cvRect(-1,-1,0,0); IplImage* image=cvLoadImage(“1.bmp“); coutwidthheight“*“endl; /cvZero(image); IplImage* temp=cvCloneImage(image); cvNamedWindow(“Box Example“); cvSetMouseCallback(“Box Example“,my_mouse_callback,(void*)image); while(1) cvCopy(image,temp); if(drawing_box) draw_box(temp,box); cvShowImage(“Box Example“,temp); if(cvWaitKey(30)=27) break; cvSaveImage(“temp.jpg“,temp); cvReleaseImage( cvReleaseImage( cvDestroyWindow(“Box Example“); return 0; void my_mouse_callback(int event,int x,int y,int flags,void* param) IplImage* image=(IplImage*)param; switch(event) case CV_EVENT_MOUSEMOVE: if(drawing_box) box.width=x-box.x; box.height=y-box.y; break; case CV_EVENT_LBUTTONDOWN: drawing_box=true; box=cvRect(x,y,0,0); coutbox.x“ “box.yendl; break; case CV_EVENT_LBUTTONUP: drawing_box=false; draw_box(image,box); coutbox.x“ “box.y“ char s13
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- T/CHTS 10170-2024半开级配超薄磨耗层技术指南
- 单元过关检测九 概率与统计
- 产后抑郁的团体心理治疗实践
- 产后抑郁的神经炎症机制研究进展
- 初中社会与道德 遵守社会规则试卷
- 交叉设计的统计分析方法与软件实现
- 互联网医疗模拟教学中的知情同意与数据安全
- 重庆市2025-2026学年高二生物上学期中试题含解析
- 课件:我是爸妈的小帮手复习课程
- 2023-2024学年九年级数学上册单元速记·巧练(人教版)第二十三章旋转(压轴题专练)(原卷版+解析)
- 医院科主任培训课件
- 多光谱成像原理课件
- 民族区域自治法课件
- 天文学基础知识历法
- (2025年标准)优先认购权 协议书
- 2025三力测试考试题库及答案
- 船舶伙食管理办法
- 深圳精神患者管理办法
- 《Python语言程序设计(项目式)(微课版)》-模拟试卷及答案
- 德龙咖啡机 EC680.R 中文说明书
- 《电工(5-3级)技能考核要素细目表及技能考核内容结构表》
评论
0/150
提交评论