JPEG图像获取GPS数据

来源:互联网 发布:淘宝美工和运营的关系 编辑:程序博客网 时间:2024/06/08 01:31

背景

周一来到实验室本来要做项目,这个月快到月底了,想赶快写,要不然导师就要催。导师突然交给任务,让完成一个基于c++的JPEG图像获取GPS数据的小程序,他说很小,很简单,让我赶快写。让我做的事情如下图:
就是红圈的地方
就是要获取如图所示的GPS数据。TUA,我哪会啊,根本是一头雾水啊,但是还是给应承下来。

准备工作

我准备了两个步骤:

  1. 如何实现多文件选取的功能,将获取到的图像文件绝对路径存储;
  2. 如何对每个图像文件抽取GPS数据。

创作路径

我真是从百度到谷歌再到必应,不停的搜索,最终在csdn中找到了一个关于读取gps的实现文件,如下图,具体下载地址我忘了(不过我等会提供我的csdn下载地址,有点无耻啊):
就是我

步骤1

三个关键:
1. CFileDialog选中多个图像,需要加OFN_ALLOWMULTISELECT 属性;
2. dlg.m_ofn.nMaxFile = 500 * MAX_PATH; 设置选中的数目,这也是后来被接收程序的人提醒才发现的;
3. CArray(CString, CString) arrayFilename;用于获取图像选中图像的路径,相当于一个数组,循环迭代即可取出;(HINT:利用POSITION变量)

只要获得图像每一张的图像路径,剩下的只需迭代执行步骤二获取每张GPS数据即可。
一些杂碎的操作不介绍了,什么打开文件,关闭文件。。。。。

步骤2

其实这个说难不难,只要弄清楚JPEG的meta信息即可,我也不是太懂,只是找到GPS的meta,然后转换成double类型即可。取一个图:
是我
其实只用到了前两个,因为第二个就包括了经纬度的分和秒,他们是一起算的,后来拆成秒的。我太机智了。哈哈

碎语

1.我把程序设置成黑框消失,不用弹出那个讨厌的黑框框。设置两个地方,如下两个图:
1
2
第一个去掉_console,第二个设置成系统模式。第三是把main改成winmain入口
2.出现Nafxcwd.lib;Libcmtd.lib;冲突定义,根据网上教程改成如下图所示:
3
这样就解决了问题
3.后来发现还出现图像gps数据发生文件分割的问题,后来想了下是因为我用时间作为文本的名称,在跨秒级时间处理的图像集,因为时间不同所以后来输出的文件相差秒级,因为使用此程序的人认为这不是问题,所以就没有处理这个小问题。
程序的下载地址

尾语

其实这里面没啥技术问题,就是忙了小半天,午觉都没说,写下来,发发牢骚,继续前进。我偶然发现我借的书《创新算法》竟然没有目录,无语了,第一次见那么奇葩的书。不过看起来感觉很棒,这周好好看。哈哈。。。

0 0