opencv中stitching_detail的运行
这个拼图并非自带的直接使用sources中的代码。而是把必要的内容放到工程中,改造成自己的图像拼接。参考博文:http://www.tuicool.com/articles/fMbUfaF
该篇博文总体上来讲,很好的指导了思路,但是在尝试的过程中屡次碰壁。所以现在就来把整个搭建过程再来复述一遍。
希望有那么一点帮助。
//前提先把opencv跑通,也就是上一篇随笔的内容。上一篇从体来讲还可以写的,主要是因为原博文非常详尽,所以我在写的时候就把我这里需要怎么跑,比较清楚的写了一下。
这篇真的是跑得我脑袋冒泡却也没跑成功,所以发个博来记述一下。
首先创建工程:
原文中的描述可以自己看一下。还是很好的
“新建工程,将H:\opencv\sources\modules\stitching的文件夹中的include和src复制到工程文件夹中,将sample\cpp中的stitching_detailed.cpp也复制到工程文件夹中。”
—— http://www.tuicool.com/articles/fMbUfaF
注意下这段话的描述:反复看了很久。我还复制粘贴过,简直醉了,可能是还是不熟悉vs的环境。这个句话的正确步骤是:
1、先去opencv目录下面。
1)选中include 和src目录。
2)Ctrl+C完成复制。
3)到vs环境中
点到这个工程目录里面。左键单击一下这个tryMosic这个工程
然后Ctrl+V。
然后她会自动帮我们把头文件和cpp文件分开放好。
2、基本环境的问题。这也就是我们需要用到上一篇文章——配置的原因。
看看问题在哪里:
随便单击一个刚刚复制进来的.hpp 或者.cpp文件。
就发现报了好多红。同eclipse里面一样一片一片的爆红就是没有导包嘛~,这里面我们是没有导入必要的类库。
解决:
项目->属性->VC++目录->包含目录->
依然是新建。
补上三个
包含目录 下移两行 到库目录中进行修改
链接器输入部分:
opencv_ml249d.lib
opencv_calib3d249d.lib
opencv_contrib249d.lib
opencv_core249d.lib
opencv_features2d249d.lib
opencv_flann249d.lib
opencv_gpu249d.lib
opencv_highgui249d.lib
opencv_imgproc249d.lib
opencv_legacy249d.lib
opencv_objdetect249d.lib
opencv_ts249d.lib
opencv_video249d.lib
opencv_nonfree249d.lib
opencv_ocl249d.lib
opencv_photo249d.lib
opencv_stitching249d.lib
opencv_superres249d.lib
opencv_videostab249d.lib
opencv_objdetect249.lib
opencv_ts249.lib
opencv_video249.lib
opencv_nonfree249.lib
opencv_ocl249.lib
opencv_photo249.lib
opencv_stitching249.lib
opencv_superres249.lib
opencv_videostab249.lib
opencv_calib3d249.lib
opencv_contrib249.lib
opencv_core249.lib
opencv_features2d249.lib
opencv_flann249.lib
opencv_gpu249.lib
opencv_highgui249.lib
opencv_imgproc249.lib
opencv_legacy249.lib
opencv_ml249.lib
复制这一堆。
然后运行。
找不到:
gcgraph.hpp
就是缺少目录的事情。
这样我们只要找到路径就可以了。这个路径确实比较难找,有需要的话我可以帮助找一下。但是其实也并不难,最重要的是相信自己可以解决这很重要。
现加上我们看看能不能跑通。<插曲>之所以加上这个目录是因为:
在precomp.hpp 里面include的目录除了<> 系统目录,都是当前路径下的文件,而他们都在包含目录里面进行的添加,所以如法炮制,加上了opencv里面的这个头文件。然后把程序找到这个目录。
运行
这个就是怎么也跑不出来了.
所以拿上一版试出来的,来展示这个成果:
那个时候的名字还叫做testmosic
生成这样一个文件:
插曲:
出现问题
1>------ 已启动生成: 项目: trymosic, 配置: Debug Win32 ------
1>MSVCRTD.lib(crtexe.obj) : error LNK2019: 无法解析的外部符号 _main,该符号在函数 ___tmainCRTStartup 中被引用
1>F:\code4vs\trymosic\Debug\trymosic.exe : fatal error LNK1120: 1 个无法解析的外部命令
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
根据度娘教程:
http://jingyan.baidu.com/article/d621e8da0d7c022864913f40.html
将
改成:
导致问题生了小问题:
1>------ 已启动生成: 项目: trymosic, 配置: Debug Win32 ------
1>MSVCRTD.lib(crtexew.obj) : error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCRTStartup 中被引用
1>F:\code4vs\trymosic\Debug\trymosic.exe : fatal error LNK1120: 1 个无法解析的外部命令
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
度娘后的结果是要我再改回去。。。
蒙蔽了。。。
这程序本就没入口啊~~~,需要我们生成一个:
控制台应用程序。
就是理论上,插曲这部分出现之前,程序应该是编译通过的。
经过一番努力发现就是没有函数入口,如果发现反复要求变更控制台跟窗口,那么说明函数真的缺少入口。所以现在想到的办法就是重新提取一下opencv。再做一次尝试