您的位置:首页 > 运维架构

OpenCV 之Hello world篇

2014-08-03 17:27 519 查看
Step1: 准备环境

OpenCV 在github上下载最新源码:https://github.com/Itseez/opencv

CMake 下载最新3.0 http://www.cmake.org/cmake/resources/software.html
VS2013

安装git

TBB 下载https://www.threadingbuildingblocks.org/ 线程构建模块

Step2: 借助CMake生成VS2013的解决方案

新建一个OpenCVLatest目录,然后用git clone 下最新的OpenCV 源码。

git clone https://github.com/Itseez/opencv.git[/code] 
在OpenCVLatest 目录下,新建一个build\buildvs2013x64 目录。

打开CMake软件,进行配置:

1)在Where is the source code => OpenCV的源代码

2)Where to build the binaries =>OpenCVLatest\build\buildvs2013x64

3)点击"Configure" 按钮,在弹出的对话框中,选择“Visual Studio 12 Win64”,使用默认的本地编译器,然后点击”Finish“

4) 勾选"WITH_TBB" (滑动到底部)

并修改TBB_INCLUDE_DIRS 的值,为解压TBB的include目录。 ==> OpenCVLatest\tbb42_20140601oss\include

5) 点击"Configure" 按钮, 直至没有红色标记的出现。

6)点击”Generate“ 按钮,生成VS2013的工程。

Step3:编译OpenCV解决方案

打开OpenCV.sln,

选择CMakeTargets下的INSTALL 工程,点击生成Debug和Release版本的dll和lib库。

至此,编译就OK了。

PS:添加OpenCV环境变量,Value为:D:\android\workspace\OpenCVLatest\build\buildvs2013x64\install\x64\vc12

Step4: 新建VC++ win32 应用程序,工程名为:HelloWorldOpenCV

”右键“-> Configuration Properties -> Configuration Manager 新建解决方案平台,选择x64,其他默认;

在属性管理器中,选择Debug|x64, 新建OpenCV249_X64_Debug的属性表,然后进行如下配置:

右键属性

Common Properties->VC++ Directories

Include Directories 输入:

$(OpenCV)\..\..\include
Library Directories:

$(OpenCV)\lib


Linker->Input

Additional Dependencies 中输入:

opencv_calib3d300d.lib
opencv_core300d.lib
opencv_cuda300d.lib
opencv_cudaarithm300d.lib
opencv_cudabgsegm300d.lib
opencv_cudacodec300d.lib
opencv_cudafeatures2d300d.lib
opencv_cudafilters300d.lib
opencv_cudaimgproc300d.lib
opencv_cudastereo300d.lib
opencv_cudawarping300d.lib
opencv_features2d300d.lib
opencv_flann300d.lib
opencv_highgui300d.lib
opencv_imgcodecs300d.lib
opencv_imgproc300d.lib
opencv_ml300d.lib
opencv_nonfree300d.lib
opencv_objdetect300d.lib
opencv_optim300d.lib
opencv_photo300d.lib
opencv_shape300d.lib
opencv_stitching300d.lib
opencv_superres300d.lib
opencv_ts300d.lib
opencv_video300d.lib
opencv_videoio300d.lib
opencv_videostab300d.lib


类似,新建OpenCV249_X64_Release的属性表配置如下:

Release:

右键属性

Common Properties->VC++ Directories

Include Directories 输入:

$(OpenCV)\..\..\include
Library Directories:

$(OpenCV)\lib


Linker->Input

Additional Dependencies 中输入:

opencv_calib3d300.lib
opencv_core300.lib
opencv_cuda300.lib
opencv_cudaarithm300.lib
opencv_cudabgsegm300.lib
opencv_cudacodec300.lib
opencv_cudafeatures2d300.lib
opencv_cudafilters300.lib
opencv_cudaimgproc300.lib
opencv_cudastereo300.lib
opencv_cudawarping300.lib
opencv_features2d300.lib
opencv_flann300.lib
opencv_highgui300.lib
opencv_imgcodecs300.lib
opencv_imgproc300.lib
opencv_ml300.lib
opencv_nonfree300.lib
opencv_objdetect300.lib
opencv_optim300.lib
opencv_photo300.lib
opencv_shape300.lib
opencv_stitching300.lib
opencv_superres300.lib
opencv_ts300.lib
opencv_video300.lib
opencv_videoio300.lib
opencv_videostab300.lib


HelloWorldOpenCV 的demo如下:

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace std;
using namespace cv;

int main(int argc, char **argv)
{
Mat img = imread("2.jpg");
if (img.empty())
{
cout << "打开图像失败!" << endl;
return -1;
}
namedWindow("image", CV_WINDOW_AUTOSIZE);
imshow("image", img);
waitKey();

return 0;
}


如果没有其他问题,就可以正常运行,弹窗窗体显示图片了。

注意图片,放在C++ 源文件目录就可以了。

遇到的问题:

1) 提示tbb_debug.dll 找不到

解决方案:

把OpenCVLatest\tbb42_20140601oss\bin\intel64\vc12 目录下的tbb_debug.dll 文件拷贝到 OpenCVLatest\build\buildvs2013x64\install\x64\vc12\bin 目录即可。

2)无法启动,提示:

HelloWorldOpenCV.exe' (Win32): Loaded 'D:\workspace\HelloWorldOpenCV\x64\Debug\HelloWorldOpenCV.exe'. Symbols loaded.

'HelloWorldOpenCV.exe' (Win32): Loaded 'C:\Windows\System32\ntdll.dll'. Symbols loaded.

'HelloWorldOpenCV.exe' (Win32): Loaded 'C:\Windows\System32\kernel32.dll'. Symbols loaded.

'HelloWorldOpenCV.exe' (Win32): Loaded 'C:\Windows\System32\KernelBase.dll'. Symbols loaded.

'HelloWorldOpenCV.exe' (Win32): Loaded 'D:\android\workspace\OpenCVLatest\build\buildvs2013x64\install\x64\vc12\bin\opencv_core300d.dll'. Cannot find or open the PDB file.

'HelloWorldOpenCV.exe' (Win32): Loaded 'C:\Windows\System32\msvcp120d.dll'. Symbols loaded.

'HelloWorldOpenCV.exe' (Win32): Loaded 'C:\Windows\System32\msvcr120d.dll'. Symbols loaded.

'HelloWorldOpenCV.exe' (Win32): Loaded 'D:\android\workspace\OpenCVLatest\build\buildvs2013x64\install\x64\vc12\bin\tbb_debug.dll'. Symbols loaded.

'HelloWorldOpenCV.exe' (Win32): Loaded 'D:\android\workspace\OpenCVLatest\build\buildvs2013x64\install\x64\vc12\bin\opencv_highgui300d.dll'. Symbols loaded.

'HelloWorldOpenCV.exe' (Win32): Loaded 'C:\Windows\System32\user32.dll'. Symbols loaded.

'HelloWorldOpenCV.exe' (Win32): Loaded 'C:\Windows\System32\gdi32.dll'. Symbols loaded.

'HelloWorldOpenCV.exe' (Win32): Loaded 'C:\Windows\System32\lpk.dll'. Symbols loaded.

'HelloWorldOpenCV.exe' (Win32): Loaded 'C:\Windows\System32\usp10.dll'. Symbols loaded.

'HelloWorldOpenCV.exe' (Win32): Loaded 'C:\Windows\System32\msvcrt.dll'. Symbols loaded.

'HelloWorldOpenCV.exe' (Win32): Loaded 'C:\Windows\System32\advapi32.dll'. Symbols loaded.

'HelloWorldOpenCV.exe' (Win32): Loaded 'C:\Windows\System32\sechost.dll'. Symbols loaded.

'HelloWorldOpenCV.exe' (Win32): Loaded 'C:\Windows\System32\rpcrt4.dll'. Symbols loaded.

'HelloWorldOpenCV.exe' (Win32): Loaded 'D:\android\workspace\OpenCVLatest\build\buildvs2013x64\install\x64\vc12\bin\opencv_imgcodecs300d.dll'. Symbols loaded.

'HelloWorldOpenCV.exe' (Win32): Loaded 'D:\android\workspace\OpenCVLatest\build\buildvs2013x64\install\x64\vc12\bin\opencv_imgproc300d.dll'. Cannot find or open the PDB file.

'HelloWorldOpenCV.exe' (Win32): Loaded 'D:\android\workspace\OpenCVLatest\build\buildvs2013x64\install\x64\vc12\bin\opencv_videoio300d.dll'. Symbols loaded.

'HelloWorldOpenCV.exe' (Win32): Loaded 'C:\Windows\System32\ole32.dll'. Symbols loaded.

'HelloWorldOpenCV.exe' (Win32): Loaded 'C:\Windows\System32\oleaut32.dll'. Symbols loaded.

解决方法:

1. Ctrl + F5运行就可以了

2. 在cmd命令行下执行程序。

3. 把"Microsoft Symbol Servers"勾上(Tools -> Options -> Debugging -> Symbols).
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: