前言

由于我的工作绝大多数时候都是编写32位程序,而官网没给出32位版本,所以今天花了很大功夫找32位版本,兜兜转转,走了很多弯路,在此记录下正确的路线。

准备资料

opencv4.x:官方下载档,含source文件夹。
cmake:百度很多链接,30M左右大小,我使用3.15.0,(本来官网下载3.17.2使用,结果超级慢,我x86库都制作完了还没有下完-_-)。
VS2015:没啥写的。
很有用的码友分享:VS2015编译+配置32位opencv3.1.0的完整过程

制作opencv4.x x86版本

可完全参考链接内容。
1.打开CMake3.15.0
2.Browse Source -> XXX/opencv/sources
3.Browse Build -> 选择输出目录
4.Configure , 选择Visual Studio 14 2015,最后点击Finish。要等几分钟
5.列表框中出现了很多红色项:
首先勾线 BUILD_opencv_world ,这个让动态库的lib生产world版本——opencv4.3 x86版本有12个都需要链接才可以使用,详细见后续。
如果编译动态库,不需要去掉BUILD_SHARED_LIBS,(如果是静态库,请去掉勾选)——这里我选的静态库,后面小程序编译出现error LNK2038,解决办法:工程上右键-》属性-》c/c+±》代码生成-》运行库,选择多线程调试(/MTd)。后续再测试动态库是什么效果。
6.点击Generate按钮生成VS工程,比较快10min’内,结果如下图(输出目录是手误,本来该4.3的):

6678能跑opencv吗_opencv

7.打开解决方案:在输出目录里找到OpenCV.sln,用vs2015打开
8.选择vs2015的 生成 -> 批生成->勾选INSTALL的DEBUG以及RELEASE->重新生成
9.没有任何多余操作,这个项目里的代码不用看一眼,大概需要1H,结束效果:

6678能跑opencv吗_动态库_02


生成install目录就是我们需要的,把它拷贝到专门的使用地方,这是以后开发的核心部件。输出目录就可以考虑删除了,太占地方,难怪编译这么久:

6678能跑opencv吗_6678能跑opencv吗_03


6678能跑opencv吗_计算机视觉_04



调用配置与编写程序

配置包含目录:

6678能跑opencv吗_c++_05

配置库目录:

6678能跑opencv吗_opencv_06

配置链接器:

debug配置了以下所有才编译通过,只配置world会报错:无法识别的外部符号。…\install\x86\vc14\staticlib\中的全部。
opencv_world430d.lib
ade.lib
IlmImfd.lib
ittnotifyd.lib
libjasperd.lib
libjpeg-turbod.lib
libpngd.lib
libprotobufd.lib
libtiffd.lib
libwebpd.lib
quircd.lib
zlibd.lib

6678能跑opencv吗_计算机视觉_07

配置电脑系统环境变量,之前x64版有一个bin目录,现在x86版本增加一个:

6678能跑opencv吗_opencv_08

不用重启程序,编译执行,效果如下:

6678能跑opencv吗_动态库_09

同一个程序,目前可以输出x86和x64两种版本exe,Very Good!