win7+visual studio2010+Opencv配置

我的电脑:

    win7.64bit

   visual stduio 2010旗舰版

  open cv2.4.9


1.下载并解压OpenCV

下载好之后,解压到任意一个文件夹,比如“E:\softwares”。没有必要手动创建一个专门的文件夹,因为文件在解压时会自动创建一个叫opencv的文件夹,并把所有文件都解压到这个文件夹内。

            

2.设置环境变量

OpenCV库函数需要通过用户环境变量调用所需要的库文件。点击:开始->计算机(右击)->属性->高级系统设置->高级->环境变量,在用户变量里增加一项:

                变量名:path

                变量值:E:\softwares\opencv\build\x86\vc10\bin

        如果已经有path项,在其变量值结尾添加英文分号“;”,再加上上面那个值。

        这里的“x86”代表目标程序是32位的,如果要写64位的程序则选择“x64”文件夹。并不是根据开发环境(你的机器)选择的。

        后面的“vc10”代表使用Visual C++ 2010开发。如果使用Visual Studio 2012,则填写“E:\softwares\opencv\build\x86\vc11\bin”。


注销用户,重新登录Windows,保证环境变量更新并起作用。


3.创建并配置工程

 打开Visual Studio 2010,新建一个工程,选择Visual C++ ->Win32->Win32 Console Application,命名例如“OpencvTest”,

 

点击“Next”,

选择Console Application和Preconpiled header。因为程序中需要调用一些C++的库函数,所以最好勾选Precompiled header。“Additional options”中的“Empty project”最好也选上,如果不勾选“Empty project”,在代码最前面还要加一行:

1
#include "stdafx.h"
避免出现fatal error C1010错误。然后点击“Finish”。

在Solution Explorer中右击工程名,选择Properties


在弹出的窗口“OpencvTest Property Pages中,Configuration选择“Debug”(或者默认的“Active(Debug)”),Platform选择“Win32”。在左边选择Configuration Properties->VC++ Directories,在右边的General中编辑Include Directories,增加以下三项:

                E:\softwares\opencv\build\include

                E:\softwares\opencv\build\include\opencv

                E:\softwares\opencv\build\include\opencv2



其实只需要填入第一行即可。由于“include\opencv”包含C版本的头文件,“include\opencv2”包含C++版本的头文件。所以编写代码时,在头文件名称前加上“opencv/”或“opencv2/”来区分两种版本。

Library Directories中增加以下一项:

                E:\softwares\opencv\build\x86\vc10\lib



 把Configuration改为“Release”,然后对Include DirectoriesLibrary Directories做同样的修改。如果只写练习程序,只用debug功能,那么“Release”可以不用修改。如果使用Visual Studio 2012,则填写“E:\softwares\opencv\build\x86\vc11\lib”。

        仍然在“OpencvTest Property Pages”窗口下,Configuration选择“Debug”。在左边选择Configuration Properites->Linker->Input,在右面编辑Additional Dependencies,增加以下若干项(可以根据自己的需要适当删减,关于各个模块的功能,请参考这里):

                 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_objdetect2410d.lib
                opencv_ts2410d.lib
                opencv_video2410d.lib


(同样,如果仅使用debug模式,这一步可以跳过)把Configuration改为“Release”,在Additional Dependencies增加以下若干项(在文件名上的区别仅在于在末尾少了一个“d”):

                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_objdetect2410.lib
                opencv_ts2410.lib
                opencv_video2410.lib







虽然OpenCV版本众多,但文件结构都很类似。如果想使用其他版本,如2.4.7而不是2.4.10,只需要修改上面一系列*.lib文件名中的版本号即可,比如把“opencv_calib3d2410.lib”改为“opencv_calib3d247.lib”。在Notepadd++等文本编辑器中,有一个快速修改的方法,就是使用Notepadd++等文本编辑器的替换功能,以“247”替换“2410”。


4.例程测试

        假设在“H:\”盘有个名为“bee.jpg”的图片,下面用一段程序实现把这个图片逐渐变成灰度图像的过程。

        删掉OpencvTest.cpp内的内容,把下面的代码复制进去:



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
 
using namespace cv ;
using namespace std ;
 
int main ( int argc , char * * argv )
{
const char * filename = "H:\\bee.jpg" ;
Mat srcImg = imread ( filename , CV_LOAD_IMAGE_COLOR ) ;
if ( srcImg . empty ( ) )
return - 1 ;
//imshow("source", srcImg);
 
double timeSpent = ( double ) getTickCount ( ) ;
 
//-----------------------------------
 
Mat tmp1Img ( srcImg . size ( ) , CV_8UC1 ) ;
Mat tmp3Img ( srcImg . size ( ) , CV_8UC3 ) ;
cvtColor ( srcImg , tmp1Img , CV_RGB2GRAY ) ;
cvtColor ( tmp1Img , tmp3Img , CV_GRAY2RGB ) ;
 
Mat dstImg ( srcImg . size ( ) , CV_8UC3 ) ;
 
double blender ;
 
for ( int i = 0 ; i < 100 ; i ++ )
{
blender = ( double ) i / 100.0 ;
addWeighted ( srcImg , 1 - blender , tmp3Img , blender , 0 , dstImg ) ;
imshow ( "result" , dstImg ) ;
 
waitKey ( 30 ) ;
}
 
//------------------------------------
timeSpent = ( ( double ) getTickCount ( ) - timeSpent ) / getTickFrequency ( ) ;
cout << "Time spent in milliseconds: " << timeSpent* 1000 << endl ;
 
waitKey ( 0 ) ;
 
return 0 ;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
 
using namespace cv ;
using namespace std ;
 
int main ( int argc , char * * argv )
{
const char * filename = "H:\\bee.jpg" ;
Mat srcImg = imread ( filename , CV_LOAD_IMAGE_COLOR ) ;
if ( srcImg . empty ( ) )
return - 1 ;
//imshow("source", srcImg);
 
double timeSpent = ( double ) getTickCount ( ) ;
 
//-----------------------------------
 
Mat tmp1Img ( srcImg . size ( ) , CV_8UC1 ) ;
Mat tmp3Img ( srcImg . size ( ) , CV_8UC3 ) ;
cvtColor ( srcImg , tmp1Img , CV_RGB2GRAY ) ;
cvtColor ( tmp1Img , tmp3Img , CV_GRAY2RGB ) ;
 
Mat dstImg ( srcImg . size ( ) , CV_8UC3 ) ;
 
double blender ;
 
for ( int i = 0 ; i < 100 ; i ++ )
{
blender = ( double ) i / 100.0 ;
addWeighted ( srcImg , 1 - blender , tmp3Img , blender , 0 , dstImg ) ;
imshow ( "result" , dstImg ) ;
 
waitKey ( 30 ) ;
}
 
//------------------------------------
timeSpent = ( ( double ) getTickCount ( ) - timeSpent ) / getTickFrequency ( ) ;
cout << "Time spent in milliseconds: " << timeSpent* 1000 << endl ;
 
waitKey ( 0 ) ;
 
return 0 ;
}

这段程序先读入bee.jpg图片,再创建一个同样大小的灰度版本的图片,然后在一个循环中把两张图片按逐渐变化的比例融合,产生从彩色到灰度变化的动态效果。

        点击按钮“Start Debugging”或按F5键,程序就会运行了。运行效果如下:




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值