当前位置:首页 » 编程软件 » opencv静态编译

opencv静态编译

发布时间: 2022-03-06 18:02:44

A. 如何编译 opencv动态链接库

在一个项目中需要用到OpenCV,刚开始使用了OpenCV的动态链接库,这样,在移动可执行程序时还必须将OpenCV动态支持库一起搬移,很是麻烦。所以,最终选择OpenCV静态链接库,这样程序移植运行就方便了很多。

需要编译成静态库以便于应用程序链接。

网上有的教程中写的在VC++2010下安装OpenCV2.1时用到了TBB库,而我在编译链接自己的程序后需要用到TBB.dll。本人设计的目的就是要做一个独立的界面程序,不需要携带其他第三方库。经过一段时间的努力最终找到了编译OpenCV2.1静态库的方法。

需要的工具环境及文件:

-------------------------------------------------------------------------------------------------------------

1、Windows XP

2、VC++2010(VS2010)

3、为编译OpenCV源码包(我下载的有:OpenCV2.1.0,OpenCV2.3.0及OpenCV2.4.4)

4、CMake2.8.9

说明:OpenCV各版本官方下载地址:opencv.org/

cmake-2.8.9下载地址:ishare.iask.sina.com.cn/download/explain.php?fileid=35025936

--------------------------------------------------------------------------------------------------------------

以OpenCV2.1.0编译静态库为例

CMake配置

-------------------------------------------------------------------------------------------------------------

打开CMake并设置:

Where is the rource code :OpenCV源代码所在的文件夹

Where to build the binaries:CMake配置好得到的文件放在位置(我的:E:\OpenCV2.1.0-prj)

然后点击configure,选择"Visual Studio 10"。然后确定。

等待configure完成,会出现很多红色的选项,因为主要是生成OpenCV的库,所以只需保留某些选项:

去掉BUILD_NEW_PYTHON_SUPPORT,BUILD_SHARED_LIBS, BUILD_TESTS

勾选OPENCV_BUILD_3RDPARTY_LIBS, WITH_TBB,WITH_JASPER, WITH_JPEG,
WITH_PNG, WITH_TIFF选项,

然后再点击configure,如下图:

提示TBB_INCLUDE_DIR找不到,因为我们不需要TBB库,所以忽略,再一次点击configure。

等待配置完成,最后点击generate,完成后关闭CMake。

-------------------------------------------------------------------------------------------------------------

VC++2010编译静态库

-------------------------------------------------------------------------------------------------------------
进入E:\OpenCV2.1.0-prj目录,使用VC++2010打开.sln文件,打开项目管理器

这时候会看到

解决方案中有很多小项目存在。

注:这时我们右键任意点击一个子项目(如cv),选择属性,可以在配置属性下的常规项目中看到,配置类型为
静态库(lib)。

按住ctrl键,选中除过ALL_BUILD, INSTALL, ZERO_CHECK,
uninstall四个项目的其他所有项目,在菜单中选择项目->属性,打开配置属性->c/c++->代码生成选项,在右侧窗口中的运行时库中选择多线程调试(/MTd),然后确认。

说明:这里有四个选项(/MT, /MTd, /MD,
/MDd),前两个一组,为静态链接运行时库,运行时不需要运行时库的支持,代码直接插入到程序中去;后两个一组,为动态链接运行时库,运行时需要msvcr90.dll或msvcp90.dll支持。

我们先编译Debug版的OpenCV静态库,在解决方案"opencv"(22个项目)上单击右键,选择重新生成解决方案,此时便开始编译OpenCV库了,等编译结束会提示完成16个,失败4个:

这四个项目生成的是exe程序,不需要管他们。到这步我们已经生成了Debug版本的静态库!

然后我们用相同的方式生成Release版的库,在之前的基础上只需要将选项选择多线程/MT,再进行编译。编译时警告很多,直接忽略!

注意:/MT即是Release版本,/MTD即是Debug版本。

最终我们需要的静态库就存在:E:\OpenCV2.1.0-prj/lib 和 E:\OpenCV2.1.0-prj/3rdparty/lib
两个目录,我们编译好的库就在这两个文件夹下。分别

将E:\OpenCV2.1.0-prj/3rdparty/lib中Debug
下面的所有文件Copy到E:\OpenCV2.1.0-prj/lib中的Debug 文件中。

将E:\OpenCV2.1.0-prj/3rdparty/lib中Release下面的所有文件Copy到E:\OpenCV2.1.0-prj/lib中的Release文件中。

B. opencv的静态库能用到嵌入式软件的开发中吗

能否使用,取决于 LZ 编译出来opencv的静态库是否是对应硬件的?
如果编译出来是 X86 的,肯定不能在嵌入式平台下使用。

C. 求救!!!linux opencv 静态库 链接问题,哪位大神帮帮我

这个要链接上libdl.so

D. opeencv 静态库和动态库的区别

动态库使用(简单)
1、在VC2010加入OpenCV所有头文件路径即可(包括opencv和opencv2两个文件夹下面的所有文件,一般是将opencv2整个文件夹到opencv文件夹下)(解决方案->C/C++->常规->附加包含目录)
2、在VC2010加入OpenCV所需库文件路径(解决方案属性->连接器->常规->附加库目录)
3、在VC2010加入OpenCV所需库文件名称(解决方案属性->连接器->输入->附加依赖项)

静态库使用
通过“OpenCV - 编译静态OpenCV库(静态库)”一文中介绍的方法就应该能够得到了Debug和Release版本的
OpenCV静态库了。
在VC2010使用这些静态库也是很有讲究的
首先要注意几点:
1、在VC2010加入OpenCV所有头文件路径即可(包括opencv和opencv2两个文件夹下面的所有文件,一般是将opencv2整个文件夹到opencv文件夹下)(解决方案->C/C++->常规->附加包含目录)
2、在”解决方案属性->连接器->输入->附加依赖项“中加入“3rdparty”文件夹中的所有静态库(这也是和动态库的区别之一,动态库不需要加入这些“辅助”库)
vfw32.lib(“3rdparty”文件夹中没有,这时系统自带的,直接加入即可)
comctl32.lib (“3rdparty”文件夹中没有,这时系统自带的,直接加入即可)
libjasper.lib
libjpeg.lib
libpng.lib
libtiff.lib
zlib.lib
videoInput.lib(“3rdparty”文件夹中没有,且系统也没有,此文件在OpenCV为编译的源码包中有,ctrl+F去搜索)
atlthunk.lib(可能整个电脑中都没有此文件,网络上下载,其实也有其他方法来解决"打不开此文件的错误",看下面的错误纠正)
opencv_lapack.lib
-------------------------------------------------------
注意:以上这些库很重要,不然即使加了下面3中的OpenCV常用静态库也是没用的,会有很多错误!
3、在”解决方案属性->连接器->输入->附加依赖项“中加入常用的cv210d.lib cxcore210d.lib highgui210d.lib
4、在”解决方案属性->连接器->常规->附加库目录“中加入这些库文件(我通常将“3rdparty”文件夹中的库文件到当前工程的cv210d.lib cxcore210d.lib highgui210d.lib文件所在同级目录下)所在路径

E. 如何做到linux下opencv程序的静态编译

运行了楼上给的命令之后,结果是这样的: # g++ `pkg-config opencv --libs --cflags opencv` facedect.cpp -o facedect -static /tmp/cc8XhRf6

F. cmake编译opencv程序的时候怎么静态编译

使用opencv需要编译源码,得到库文件。可以用cmake构建项目后编译,也可以直接用官方提供的编译好的版本。 官方提供的编译库一般只是标准版本,没有附加某些库,比如tbb等,要想让opencv使用tbb等库,就只能自己构建项目后编译。

G. 为什么每次运行OpenCV程序都会提示缺少opencv

这是程序运行需要的运行库,如果不想这样可以静态编译,但是这需要静态的opencv库

H. opencv静态链接库有什么用

静态库包含了编译好的opencv函数,可以直接链接到你的程序里

I. 怎么让opencv编译到可执行文件里,使别人电脑没有opencv也能运行exe

首先,先要再linux上安装opencv的库,在线安装的话,很容易
然后,编译的时候需要加上
`pkg-config
opencv
--libs
--cflags
opencv`
参数

热点内容
为什么工作站配置不好 发布:2025-01-21 02:53:38 浏览:445
我的世界服务器怕被破坏怎么办 发布:2025-01-21 02:33:15 浏览:932
linux下交叉编译实验 发布:2025-01-21 02:19:00 浏览:434
java培训班多少钱 发布:2025-01-21 02:17:23 浏览:335
帝豪gl哪个配置是电容屏 发布:2025-01-21 02:11:23 浏览:304
openwrt编译零基础 发布:2025-01-21 01:53:30 浏览:20
视频聊天室源码php 发布:2025-01-21 01:39:29 浏览:939
游戏脚本xp 发布:2025-01-21 01:25:48 浏览:210
cfa建模需要什么电脑配置 发布:2025-01-21 01:16:41 浏览:97
配置获取异常怎么办 发布:2025-01-21 01:16:29 浏览:642