win8.1 + VS2010 + OpenCV2.4.10重编译OpenCV开发环境搭建

win8.1 + VS2010 + OpenCV2.4.10重编译OpenCV开发环境搭建

重编译的好处:可以调试的时候看OpenCV的源代码。

重编译要得到的东西:Debug版本和Release版本的dll,lib,头文件。(dll添加到环境变量里,运行时用,自己编译的dll调试时可以跟踪到Opencv的源码内;lib和头文件配置到编译器里)

PS:如果只是使用Opencv而不需要跟踪源码,则使用Opencv自带的库文件即可。跳到5配置Opencv开发环境,对应的文件都在..\opencv\build\目录下,其中dll(bin目录),lib目录在平台文件夹下如..\opencv\build\x86\vc10。

本机Win8.1 64位系统,装有VS2010,以编译32位的Opencv库为例,要编译64位库需要注意选择64位的配置。

1       下载Opecv,CMake,TBB并安装

下载OpenCV2.4.10:http://opencv.org/downloads.html,解压到D:\Program
Files\

下载cmake-3.2.3-win32-x86:http://www.cmake.org/cmake/resources/software.html,安装时请勾选上“AddCMake
to the system PATH for all users”。

下载tbb43_20150424oss_win:http://threadingbuildingblocks.org/download,解压到D:\Program
Files\

2       配置TBB环境变量

Path里添加:D: tbb43_20150424\bin\ia32\vc10

bin目录内ia32表示要编译32位工程,intel64表示要编译64位工程,vc11表示VS版本为2012,vc10代表2010。

3       用CMake生成VS2010的OpenCV工程

新建文件夹OpenCVProject:D:\OpenCVProject(用于存放自己的OpenCV编译工程)。

打开CMake,"Browse
Source..."选择Opencv的目录D:\opencv\sources(内有CMake的组态档"CMakeLists.txt"),"BrowseBuild..."选择刚才自己新建的工程存放路径"D:/OpenCVProject"。点击Configure按钮,在出现的对话框中选择Visual
Studio 10(如果编译64位dll注意选择64位VS11配置),默认Use
default native compilers,Finish继续。

第一轮配置完后往下拉,勾选WITH_TBB,点击Configure进入第二轮。

修改红色部分TBB路径为D:\tbb43_20150424oss\include,再次点击Configure;继续点击Configure,

直到没有红色标记。

点击Generate生成Opencv工程,退出CMake。

4       用Opencv
VS2010工程编译生成自己的Opencv库

打开生成的Opencv工程,选择CMakeTargets下INSTALL,右键“生成”,生成Debug版dll,lib。

我08年的老电脑,编译要十几分钟。。。

切换编译模式为Release模式,重复上一步生成Release版dll,lib。

目标达成,在D:\OpenCVProject\install内有我们所要的dll,lib,include头文件,有了这些就可以进行Opencv开发与源码跟踪了。跟dll关联的源代码在Opencv安装目录D:\opencv\modules内。

我习惯将将D:\ProgramFiles\OpenCVProject\install拷贝到D:\opencv\下,并将install重命名为vc10x86。而此时D:\OpenCVProject没有用了,但是不能删除,否则无法跟踪源码,占用6G多空间,可以通过VS2012的“清理解决方案”来减到3G多。

5       配置Opencv开发环境

在环境变量Path里添加:D:\opencv\vc10x86\x86\vc10\bin

6       编写测试工程

6.1   打开VS2012,新建控制台应用程序TestOpencv。

6.2   配置包含目录和库目录

项目->xxx属性->VC++目录->包含目录,添加D:\ProgramFiles\opencv\vc11x86\include

再加D:\opencv\vc10x86\include\opencv2最后加,D:\opencv\vc10x86\include\opencv,opencv版本不同,文件夹也不同。

项目->xxx属性->VC++目录->库目录,添加D:\ProgramFiles\opencv\vc11x86\lib

项目->xxx属性->链接器->输入->附加依赖项,添加lib文件名列表如下图。

对于配置方案为Debug的配置,Opencv的dll和lib中,末尾带d的就是Debug版本。其中文件名带“2410”表示opencv的版本号为2
.4.10,针对不同版本的opencv

添加的文件名也不一样,可通过找到库的文件夹位置,查看详情:

对于配置方案,Debug的配置添加:

opencv_calib3d2410d.lib
opencv_contrib2410d.lib
opencv_core2410d.lib
opencv_features2d2410d.lib
opencv_flann2410d.lib
opencv_gpu2410d.lib
opencv_highgui2410d.lib
opencv_imgproc2410d.lib
opencv_legacy2410d.lib
opencv_ml2410d.lib
opencv_nonfree2410d.lib
opencv_objdetect2410d.lib
opencv_ocl2410d.lib
opencv_photo2410d.lib
opencv_stitching2410d.lib
opencv_superres2410d.lib
opencv_ts2410d.lib
opencv_video2410d.lib
opencv_videostab2410d.lib

对于配置方案,Release的配置添加:

opencv_calib3d2410.lib

opencv_contrib2410.lib

opencv_core2410.lib

opencv_features2d2410.lib

opencv_flann2410.lib

opencv_gpu2410.lib

opencv_highgui2410.lib

opencv_imgproc2410.lib

opencv_legacy2410.lib

opencv_ml2410.lib

opencv_nonfree2410.lib

opencv_objdetect2410.lib

opencv_ocl2410.lib

opencv_photo2410.lib

opencv_stitching2410.lib

opencv_superres2410.lib

opencv_ts2410.lib

opencv_video2410.lib

opencv_videostab2410.lib

6.3   添加测试代码

修改TestOpencv.cpp,代码为:

#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
int main()
{
    Mat img=imread("pp.jpg");//读入一张图片
    namedWindow("Test");      //创建一个名为Test窗口
    imshow("Test",img);   //窗口中显示图像
    waitKey(5000);            //等待5000ms后窗口自动关闭
}



时间: 2024-10-27 13:17:36

win8.1 + VS2010 + OpenCV2.4.10重编译OpenCV开发环境搭建的相关文章

win10 + VS2010 + OpenCV2.4.10重编译OpenCV开发环境搭建

win10 + VS2010 + OpenCV2.4.10重编译OpenCV开发环境搭建 重编译的优点:能够调试的时候看OpenCV的源码. 重编译要得到的东西:Debug版本号和Release版本号的dll,lib,头文件.(dll加入到环境变量里,执行时用,自己编译的dll调试时能够跟踪到Opencv的源代码内:lib和头文件配置到编译器里) PS:假设仅仅是使用Opencv而不须要跟踪源代码,则使用Opencv自带的库文件就可以. 跳到5配置Opencv开发环境.相应的文件都在..\ope

10分钟学会Less开发环境搭建与初体验

Less 是一门 CSS 预处理语言,它扩充了 CSS 语言,增加了诸如变量.混合(mixin).函数等功能,让 CSS 更易维护.方便制作主题.扩充. 今天看一下,10分钟能不能手把手快速教会你Less环境搭建以及使用入门. Less环境搭建: 1).安装nodejs.打开命令提示符(win+r),分别输入node -v以及npm -v如果返回版本号说明你安装成功了 2).安装less.在"命令提示符"下运行命令"npm install less -g" 3).配

Myeclipse 10.7 android(安卓) 开发环境搭建

1 下载并安装JDK,并且设置环境变量 2 下载 Android SDK, 国内:http://www.androiddevtools.cn/ 官方:http://developer.android.com/sdk/index.html android 4.3 sdk: http://pan.baidu.com/s/1o65bfV8  (android 4.3 sdk.rar  53M) 这是Android开发所需的sdk,下载并解压后,将解压出的整个文件夹复制或者移动到 your sdk 路径

【OpenCV笔记】使用VS2012和OpenCV2.4.9搭建配置OpenCV开发环境

使用MS Visual C++来创建OpenCV工程,由于不同的VS版本在配置时有所差别,现特把配置过程总结下来,以方便自己和其他朋友使用. 1.软件准备 安装Visual Studio2012和OpenCV2.4.9 这里就不再对软件的安装和环境变量的设置进行说明了,其他类似的文章的设置都大抵相似,本文重点介绍一下VS2012环境的配置. 2.配置VS2012环境 (1)新建工程 你可以创建简单的控制台应用或者拥有图形用户界面的复杂应用,此处我们选择最简单常用的控制台应用. 理解解决方案(So

【课程分享】深入浅出嵌入式linux系统移植开发 (环境搭建、uboot的移植、嵌入式内核的配置与编译)

深入浅出嵌入式linux系统移植开发 (环境搭建.uboot的移植.嵌入式内核的配置与编译) 亲爱的网友,我这里有套课程想和大家分享,如果对这个课程有兴趣的,可以加我的QQ2059055336和我联系. 课程内容简介 本课程重点是给大家讲解嵌入式linux系统移植的开发方法,采用理论与实践,硬件与软件相结合的方法. 1.在每节开始之前先简单回顾上一节所讲的主要内容,并对本节所讲的内容先进行概述,讲解概念.技术要点,设计实现思路等内容,最后总结本次课程的要掌握的要点. 2.在讲课的过程中对关键技术

XE6移动开发环境搭建之IOS篇(7):在Mac OSX 10.8中安装Xcode4.6.3(有图有真相)

XE6移动开发环境搭建之IOS篇(7):在Mac OSX 10.8中安装Xcode4.6.3(有图有真相) 2014-08-23 21:37 网上能找到的关于Delphi XE系列的移动开发环境的相关文章甚少,本文尽量以详细的图文内容.傻瓜式的表达来告诉你想要的答案. 在安装Xcode前,我们先了解下Mac下如何卸载U盘!在VM9下,同一时间内,一个物理设备只能由一个系统去独占,无论是物理机还是虚拟机.我们可以了解一下虚拟机加载U盘的规则:    1.在虚拟机中加载U盘时,会自动将U盘从Wind

XE6移动开发环境搭建之IOS篇(4):VMware9里安装Mac OSX 10.8(有图有真相)

XE6移动开发环境搭建之IOS篇(4):VMware9里安装Mac OSX 10.8(有图有真相) 2014-08-18 21:10 网上能找到的关于Delphi XE系列的移动开发环境的相关文章甚少,本文尽量以详细的内容.傻瓜式的表达来告诉你想要的答案. 以下内容比较长,我们努力地图解每一个步骤,没有耐心的观众可以忽略前27步,直接看第28步最终结果.--------------------------------------------------------------- 1.在虚拟机主界

XE6移动开发环境搭建之IOS篇(7):在Mac OSX 10.8中安装XE6的PAServer(有图有真相)

XE6移动开发环境搭建之IOS篇(7):在Mac OSX 10.8中安装XE6的PAServer(有图有真相) 2014-08-22 21:06 网上能找到的关于Delphi XE系列的移动开发环境的相关文章甚少,本文尽量以详细的内容.傻瓜式的表达来告诉你想要的答案. 在安装PAServer前,我们先配置一下MAC的IP,给定一个固定的内网IP,以便我们的XE6能更好地连接它!------------------------------------------------------------

opencv2.4.9中stitching_detailed源码环境搭建

今天做了一下老师给的第一套题,第一题是判断一个字符串是否在另一个字符串中:做了一下,感觉有好多种写法,java中的类真的好多啊,要掌握好一些基本类的用法: package com.exam.e120; public class java1 { public static void main(String[]args){ String str1,str2; str1="I am Tom, I am from China."; str2="Tom"; int i=str