人机交互量测同名点程序--双像三维建模小软件开发实例(四)

本文介绍了ImageMeasuringApparatus,一款用于双像立体量测的程序,功能包括影像显示、手动定位、量测点加载。程序基于MFC多视图,涉及CMainFrame、CImageMeasuringApparatusDoc、CMeasuringView、CPhotoView类。主要操作包括影像显示、漫游、粗定位、像点载入和手动刺点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个量测同名点的程序是图像几何定向的必要准备,为此我们开发了ImageMeasuringApparatus(图1),它是一款用来进行双像立体量测的程序,其功能有:

1、  影像对的显示和漫游;

2、  显示缩略图,进行手动粗定位;

3、  载入已量测点、手动亚像素级刺点。

该程序源代码(VC++)和详细的开发说明文档(.doc)已经添加在了本人的资源里,可以下载查阅。

图 1. ImageMeasuringApparatus运行界面

下面我们阐述改程序的开发方法,通过学习本方法或许有助于加强对于MFC多视图图形界面程序开发的掌握:

本程序是基于MFC的单文档应用程序,布局上采用分割窗口形式。其中涉及的主要的类有CMainFrame,CImageMeasuringApparatusDoc,CMeasuringView,CPhotoView以及CPhotoView2,另外还有一些对话框用来接收参数,原理简单此处不予介绍。

CMainFrame类主要实现了主框架窗口的分割,分割方式如图2所示。

CImageMeasuringApparatusDoc 类用来存储影像和量测点数据。

CMeasuringView类用以显示缩略图,微调视图,并响应用户微调操作。

CPhotoViewCPhotoView2类用以显示原始影像,相应用户漫游刺点等操作。

图 2 窗口分割示意图

下面通过操作实例来分析各类的关系:

1、 打开影像,显示,漫游及粗定位。

①点击菜单或工具栏打开按钮,CImageMeasuringApparatusDoc类响应该消息,打开文件对话框接收用户输入的文件路径,利用OpenCV读取左右影像数据保存于m_img_l和m_img_r,并分别转换备份一个三通道影像m_l和m_r,以便后续处理。刷新视图。

②在CPhotoView和CPhotoView2的Ondraw函数中显示CImageMeasuringApparatusDoc保存的影像,注意转换坐标将其显示到视图中心。

③点击,就转换CMainFrame中保存的布尔型变量flag_drag的值为true,在CPhotoView和CPhotoView2中添加鼠标按下,拖放和释放的消息响应函数,在CMainFrame的flag_drag为true的情况下处理用户的漫游影像操作。

④在CMeasuringView的缩略图上按下左键,要将原始影像粗定位到相应位置。为此,在其LButtonDown中将按下点位置坐标转到原始影像,设置CPhotoView或CPhotoView2的offset变量,刷新视图,实现定位。

2、 载入像点,显示像点。

①点击菜单或工具栏载入像点按钮,CImageMeasuringApparatusDoc类响应该消息,打开文件对话框接收用户输入的文件路径,读取左右影像像点数据保存在m_pt_l,m_pt_r,同时保存点数m_ptl_num和m_ptr_num。

②在CPhotoView ,CPhotoView2和CMeasuringView的m_overview_l和m_overview_r控件上实现显示像点的功能。首先像点坐标转换到这三个视图的坐标,然后在该坐标处画十字丝即可。

3、 手动刺点,微调,保存所刺像点。

①点击刺点按钮,就转换CMainFrame中保存的布尔型变量flag_cross的值为true,在CPhotoView和CPhotoView2中添加鼠标按下,拖放和释放的消息响应函数,在CMainFrame的flag_drag为true的情况下处理用户的刺点操作。

②一旦触发刺点操作,就从原始影像上汲取触发点处为中心31*31范围的像素值保存在CMeasuringView的m_ptl_lpBits和m_ptr_lpBits中。

③CMeasuringView将m_ptl_lpBits和m_ptr_lpBits像素块显示在微调视图上,当用户点击微调按钮时调整offset_l和offset_r值,重绘微调视图上的图像。

④量点完毕,按下空格键时弹出输入点号对话框,输入点号后保存该点对于CImageMeasuringApparatusDoc的m_pt_l和m_pt_r.

⑤点击保存按钮,将保存CImageMeasuringApparatusDoc的m_pt_l和m_pt_r与当前文件夹下。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值