OpenCV 在VC6下面的安装与配置

VC6下安装与配置

安装OpenCV

双击安装文件,会出现如下的界面,注意到界面是全英文的:

<shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></path><lock aspectratio="t" v:ext="edit"></lock></shapetype><shape id="_x0000_i1025" title="Image:Opencv-install-step1.png" style="WIDTH: 324pt; HEIGHT: 248.25pt" o:button="t" href="/index.php/Image:Opencv-install-step1.png" alt="Image:Opencv-install-step1.png" type="#_x0000_t75"><imagedata o:href="http://www.opencv.org.cn/images/f/f9/Opencv-install-step1.png" src="file:///C:/DOCUME~1/user/LOCALS~1/Temp/msoclip1/03/clip_image001.png"></imagedata></shape>

21 VC6.0 下的安装-安装界面

点击“Next”后,安装程序会让用户选择OpenCV的根目录所在硬盘的位置,比如图中所示的“C:\Program Files\OpenCV”路径。我们以后用<opencv_root>来表示这个路径。用户可以选择安装到其它的路径下,推荐将OpenCV安装在C盘的OpenCV目录下

<shape id="_x0000_i1026" title="Image:Opencv-install-step2.png" style="WIDTH: 322.5pt; HEIGHT: 246pt" o:button="t" href="/index.php/Image:Opencv-install-step2.png" alt="Image:Opencv-install-step2.png" type="#_x0000_t75"><imagedata o:href="http://www.opencv.org.cn/images/2/22/Opencv-install-step2.png" src="file:///C:/DOCUME~1/user/LOCALS~1/Temp/msoclip1/03/clip_image003.png"></imagedata></shape>

22 VC6.0 下的安装-路径设置

在安装时选择“将<>\OpenCV\bin加入系统变量Add<...>\OpenCV\bin to the systerm PATH),这样做的目的是在运行程序的时候,OpenCV的动态链接库能够被访问的到,因为所有的动态链接库都放置于<opencv_root>\bin目录下。

对于特殊的路径,可以我的电脑”“属性”“高级”“环境变量中添加上述变量,如:变量Path值:C:\OpenCV\bin

<shape id="_x0000_i1027" title="Image:Opencv-install-step3.png" style="WIDTH: 324pt; HEIGHT: 248.25pt" o:button="t" href="/index.php/Image:Opencv-install-step3.png" alt="Image:Opencv-install-step3.png" type="#_x0000_t75"><imagedata o:href="http://www.opencv.org.cn/images/f/f3/Opencv-install-step3.png" src="file:///C:/DOCUME~1/user/LOCALS~1/Temp/msoclip1/03/clip_image005.png"></imagedata></shape>

23 VC6.0 下的安装-环境变量设置

安装DirectX SDK

对于想要用OpenCV进行视频处理的用户而言,还需要安装微软的DirectX SDK开发包。首先从微软官方网站上下载DirectSDK,大约在200MB左右,注意要下载directx 9.0b 版本,不是後面的升级版本

安装DirectX SDK;打开SDK的安装目录(一般为C:\DXSDK),找到BaseClasses文件夹,一般在C:\DXSDK\Samples\C++\DirectShow\BaseClasses,打开其中的BaseClasses.dsw(其中BaseClasses.sln.net下的可执行文件);在生成目录下选择批生成在选项中选择“Debug”“Release”,然後生成该项目; 打开C:\DXSDK\Samples\C++\DirectShow\BaseClasses文件夹,会发现两个文件夹——DebugRelease,将Debug中的strmbasd.lib文件和Release中的STRMBASE.lib文件拷到C:\DXSDK\Lib目录下; VC的工程中加入如下库文件和包含文件: vc.net下选择工具”“选项,在左边的目录下选择项目”“VC++目录在右上角的筐里选择库文件C:\DXSDK\Lib加入库文件中;再选择包含文件,将

 C:\DXSDK\Include

 C:\DXSDK\Samples\C++\Common\Include

 C:\DXSDK\Samples\C++\DirectShow\BaseClasses

加入其中;

注意:有必要将上述目录移到最上方,以免在编译时发生访问库的冲突!

编译OpenCV

打开OpenCV安装目录下的_make文件夹,启动其中的opencv.dsw工程(如: C:\OpenCV\_make\opencv.dsw);在vc中选择build----batch build ,所有64位的都不选,然後点build。这样就生成了以後大家经常用到的一些libdll,包括releasedebug两个版本的。

在生成过程中可能会出现如下错误:

 fatal error LNK1181: 无法打开输入文件“cvauxd.lib

 error C2039: foreground_regions: 不是“CvFGDStatModel的成员”

解决的方法是:在“解决方案管理器”中打开“cvaux”项目的包含文件中(Include\External)的cvaux. h文件,找到上述foreground_regions成员,会发现此成员已被注释掉了,只要将其上一行末尾的“/”改为“*/”使该成员可见,再次启动项目,应该就可以编译通过了。 这个问题出现在OpenCV beta5 和 OpenCV RC1版本中,以后的版本会解决这个BUG。

启动_make目录下的另外一个工程“opencv_directshow.dsw” ,使其编译通过;

加入库文件及包含文件的方法

 C:\OpenCV\cv\include

 C:\OpenCV\cvaux\include

 C:\OpenCV\otherlibs\highgui

 C:\OpenCV\cxcore\include

 C:\OpenCV\otherlibs\cvcam\include

(上述文件属于常用文件,如果需要可自行添加另外的包含文件)加入库文件:

 C:\OpenCV\lib

在项目中运用OpenCV

project - settings -all configurations

C/C++标签Category中选择Prepreocessor Additional include directories项,输入以分开的相对路径(注意相对路径的格式与你的openCV文件夹与你的工程文件夹相对位置有关),如我的工程建立在 OpenCV的目录下,则我可以这样设置相对路径:

..\cvaux\include,..\cxcore\include,..\cv\include,..\otherlibs\highgui, ..\otherlibs\cvcam\include当然,也可以输入绝对路径如 
 C:\OpenCV\cv\include

Link标签 Category中选择General Object/library modules, 输入以空格分开的

cvd.lib highguid.lib cvauxd.lib cxcored.lib cvcamd.lib

Link标签 Category中选择Input Object/library modules, 输入以空格分开的

 cvd.lib highguid.lib cvauxd.lib cxcored.lib cvcamd.lib

Link标签 Category中选择Input Additional Library path, 输入包含<opencv_root>\lib库的相对路径或绝对路径,我的工程相对路径设置为

 ..\lib

设置完以上点击确定。

加入openCV的工程到的工程里并设置依赖关系

vc6: Project - Insert project into workspace - cv.dsp

同样加入

cvaux.dsp, cxcore.dsp, highgui.dsp

Project - Dependencies: cv选择cxcore; cvaux选择cv,cxcore; highgui选择cxcore的工程选择所有。然后编译,应该是没问题了。

在项目的头文件中加入所用到的包含文件,如:

#include "cv.h"

#include "highgui.h"

一般来说这两个文件是必要的,其它头文件在用到时可自行加入,方法如上,即:在“附加包含目录”中加入包含文件,在“附加依赖项”中加入索引文件——.lib

安装调试中出现的问题

在安装和编译过程中,无疑会出现很多问题,下面给出一些常见问题的解决方案

· 编译其中的应用程序时,得到错误:streams.h not found.

出现这个错误时,是没有安装 DirectShow SDK ,它是 DirectX SDK 的一部分。 前面已经说明了如何安装 DirectX

· 安装了 DirectX SDK 後,仍然有链接错误,提示:undefined or redefined "TransInPlace" filter class constructors etc.

确信按照前面所说的步骤进行安装的,特别注意搜索目录的次序。

· 当使用 cvcam 时,程序崩溃

确认是否已经注册了 ProxyTrans.ax SyncFilter.ax

· 注册 *.ax (DirectShow filter)

在“资源管理器”中用regsvr32.exe打开这个文件。在 Win2000 中可以通过右键点击Open with->Choose Program...->Browse...->c:\windows\system32\regsvr32.exe (路径可能有所差别)。你可以让计算机记住*.axregsvr32.exe的联系,以後双击*.ax则可。

· Filter 不能被注册 (regsvr32 报告错误)

最可能的原因是 filter 需要的一些 DLLs 不在路径中。这种情况下,请确认 <OpenInstallFolder>\bin 在路径中。

· cxcore099d.dll cxcored.lib 好像丢失了

cxcore099d.dll cxcore DLL DEBUG 版本,cxcored.lib cxcore099d.dll 的输入库。打开Open OpenCV workspace, 选择 "cxcore" 作为 active project,并且选择 "Win32 Debug" 的配置. 编译建立库,这样就得到 bin\cxcore099d.dll lib\cxcored.lib。 同样步骤可以生成其它所有的 OpenCV 组件。加 d 表示 Debug 版本。

· 编译 HighGUI ,得到错误 "mil.h is not found"

mil.h Matrox Imaging Library (MIL) 的一个部分,提供 Matrox (或兼容) 视频采集卡,如 Meteor, Meteor II

如果你安装了一个这样的采集卡和MIL,添加 mil\include mil\lib Developer Studio 的搜索路径中(菜单 Tools->Options->Directories)。

如果你没有 MIL,忽略这个错误则可,文件 mil.h 只是用来编译带有 MIL HighGUI "Win32 MIL Debug" 或者 "Win32 MIL Release"。选择HighGUI "Win32 Debug" 或者 "Win32 Release" 的配置(菜单 Build->Set Active Configuration...)来代替,这两个版本的HighGUI仍然能够通过 VFW 接口采集视频,处理 AVI 文件和静态图像。

· 如何调试 DirectShow filter

打开带 FILTER workspace (e.g. opencv.dsw)

选择 filter 作为活动项目,在 debug 配置下编译它

切换到“资源管理器”,注册 filter debug 版本(例如 regsvr32 camshiftd.ax)(当 debug/release 版本切换的时候,只需要做一次就可以了,注册表里仅保存 filter 的名字)

回到 Developer Studio 然後开始 debugging 过程 (F5)。 在提示 “do you want to run to debug the module”下,选择 camshiftdemo 通过 camshift.ax DirectX SDK 工具图形编辑器 graphedit 来调试 DirectShow filter

graphedit 中建立 filter ( camera->camshift->renderer)

保存 graph (下次只要打开就可以了)

filter中的 Transform 方法或其它位置设置断点。

运行 filter

你可能感兴趣的:(C++,c,C#,配置管理,vc++)