博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Visual Studio基于CMake配置opencv1.0.0、opencv2.2
阅读量:5093 次
发布时间:2019-06-13

本文共 2606 字,大约阅读时间需要 8 分钟。

Visual Studio基于CMake配置opencv1.0.0、opencv2.2

2019-4-25 17:13:13

原因

现在最新opencv已经到4.0.1版了。用opencv1.0原因:

  • 小。源码包只有10M左右。
  • 清晰。他的文档结构清晰,不像OpenCV2时代开始越来越多的东西加进来但是文档也越来越多看不完。。
  • 很少有C++.比如没有Mat。因为希望在自己的项目中用纯C,即便用opencv也是用IplImage读取。

打开工程

opencv_100/_make/opencv.sln,用vs2013(vs2015, vs2017均可)打开它,选择升级项目。

编译cvaux,报错error C2039: 'foreground_regions' : is not a member of 'CvGaussBGModel'

解决:cvaux.h中,

第1137行
CvMemStorage* storage; /storage for 揻oreground_regions?/ /
CvSeq
foreground_regions /foreground object contours/

改为如下形式:

CvMemStorage* storage; /storage for foreground_regions/ /

CvSeq* foreground_regions /foreground object contours/

refs

https://blog.csdn.net/cheng1988shu/article/details/5783623?locationNum=2&fps=1

error LNK2026 module unsafe for SAFESEH image

首先了解了下SAFESEH机制:SAFESEH是Safe Exception Handlers的缩写。/SAVEFEH是visual studio编译器对于x86平台才有的编译选项。

在 Windows XP sp2 以及之后的版本中,微软引入了 S.E.H 校验机制 SafeSEH。SafeSEH 需要 OS 和 Compiler 的双重支持,二者缺一都会降低保护能力。通过启用 /SafeSEH 链接选项可心使编译好的程序具备 SafeSEH 功能(VS2003 及后续版本默认启用)。该选项会将所有异常处理函数地址提取出来,编入 SEH 表中,并将这张表放到程序的映像里。异常调用时,就与这张预先存好的表中的地址进行校验。

如果说依赖的库没有开启SAFESEH,那么当前可执行/库也不能开这个选项。

大概是ffmpeg、zlib等依赖在windows上的预编译包没有这个选项,所以opencv的VS工程中,各个项目都要关掉它(或者重新从源码编译各个依赖项,并确保开启SAFESEH开关):

右键项目属性->链接器->高级->影响具有安全异常处理程序->改成“否(/SAFESEH:NO)”

refs

https://stackoverflow.com/questions/10599940/module-unsafe-for-safeseh-image-c

https://blog.csdn.net/whatday/article/details/82976677

https://blog.csdn.net/wujunokay/article/details/47168589

各个项目编译无错,但是cvsample.exe找不到

观察到了其实有警告,类似:

warning MSB8012: TargetName(cvsample) does not match the Linker's OutputFile property value (cvsampled). This may cause your project to build incorrectly. To correct this, please make sure that $(OutDir), $(TargetName) and $(TargetExt) property values match the value specified in %(Link.OutputFile).

原因:因为是从vc6.0项目升级到vs2013的,需要改一下输出文件位置

具体做法:

right click the project in solution explorer, select properties, in the pop-up: configuration properties, linker, general. Select Output file on the right, this gives a drop-down, select inherent from parent or project defaults. Click apply. This gives the default linker setting: \((OutDir)\)(TargetName)$(TargetExt). Re-build the project and the warning should no longer appear.

refs

https://stackoverflow.com/questions/4494028/warning-msb8012-make-sure-that-outdir-targetname-and-targetext-prope


opencv 2.2.0的配置

build/vs2015.bat:

@echo offset BUILD_DIR=vs2015if not exist %BUILD_DIR% md %BUILD_DIR%cd %BUILD_DIR%cmake -G "Visual Studio 14 2015" ^    -DBUILD_EXAMPLES=ON ^    ../..pause

contrib模块中bind2nd函数找不到,需要包含#头文件

转载于:https://www.cnblogs.com/zjutzz/p/10769674.html

你可能感兴趣的文章
百度富文本编辑器自动缩放上传的图片
查看>>
从PHP5.0到PHP7.1的性能全评测
查看>>
sql语句中的字符串拼接
查看>>
【例9.11】01背包问题
查看>>
初学Python:基础部分
查看>>
词法分析修改版
查看>>
CentOS7.5 通过wget下载文件到指定目录
查看>>
java后端程序员1年工作经验总结
查看>>
P4843 清理雪道
查看>>
PhpStorm之设置字体大小
查看>>
js实现倒计时(分:秒)
查看>>
Web 存储之localStorage
查看>>
非常实用的jquery版表单验证
查看>>
C#计算代码行数
查看>>
AJAX 调用WebService 、WebApi 增删改查(笔记)
查看>>
数字格式化函数:Highcharts.numberFormat()
查看>>
一致性算法Paxos详解
查看>>
android studio中使用recyclerview小白篇(二)
查看>>
Tobject 类解析[转]
查看>>
俞敏洪:35岁前如何实现自我增值?
查看>>