配置OpenCV2和OpenCV3开发环境笔记
来源:互联网 发布:网络交易计积分信用卡 编辑:程序博客网 时间:2024/06/10 00:35
配置OpenCV2和OpenCV3开发环境笔记
Date: 2016-01-19Author: Kagula
Environment:
Visual Studio 2013 Update5, OpenCV 2.4.11, OpenCV 3.1.0, GTX960, CUDA 7.5.18
Prologue:
如何搭建OpenCV 2.4.11、OpenCV 3.1.0的开发环境。
OpenCV 2.4.11是从官网直接下载已经编译好的包。
OpenCV 3.1.0是从官网下载源代码自己编译(据说支持CUDA的lib得自己编译)。
这里最坑的是,官网的例子没有更新,后来还是在参考资料[4]中找到了正确的示例代码。
第一部份:确认开发环境没有异常(OpenCV 2.4.11)
新建空的win32 console solution,配置project属性。头文件搜索路径
D:\sdk\OpenCV2411\opencv\build\include;
库文件搜索路径
D:\sdk\OpenCV2411\opencv\build\x86\vc12\lib;
依赖库
opencv_calib3d2411d.lib
opencv_contrib2411d.lib
opencv_core2411d.lib
opencv_features2d2411d.lib
opencv_flann2411d.lib
opencv_gpu2411d.lib
opencv_highgui2411d.lib
opencv_imgproc2411d.lib
opencv_legacy2411d.lib
opencv_ml2411d.lib
opencv_nonfree2411d.lib
opencv_objdetect2411d.lib
opencv_ocl2411d.lib
opencv_photo2411d.lib
opencv_stitching2411d.lib
opencv_superres2411d.lib
opencv_ts2411d.lib
opencv_video2411d.lib
opencv_videostab2411d.lib
使用下面的代码测试
#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#include <iostream>#include <opencv2\imgproc\imgproc.hpp>#include "counter.h"using namespace cv;using namespace std;int main(int argc, char* argv[]){try{cv::Mat src = cv::imread("C:\\Users\\kagula\\Pictures\\a.jpg", CV_LOAD_IMAGE_GRAYSCALE);cv::Mat dst;//startTiming();cv::threshold(src, dst, 128.0, 255.0, CV_THRESH_BINARY);//Visual studio in Debug mode, Core i7-4790k, GTX960//take time is 0.200711mscout << "take time is " << stopTiming() << "ms" << endl;//cv::imshow("Result", dst);//cv::waitKey();cin.get();}catch (const cv::Exception& ex){std::cout << "Error: " << ex.what() << std::endl;}return 0;}
确认当前OpenCV开发环境正常。
第二部份:确认下CUDA环境正常(需要OpenCV3)
第一步:建立CUDA开发环境在下面网址查到GTX960兼容CUDA 5.2。Quadro K600兼容3.0。
https://developer.nvidia.com/cuda-gpus#collapse4
在下面网址下载并安装CUDA开发工具
http://developer.download.nvidia.com/compute/cuda/7.5/Prod/local_installers/cuda_7.5.18_windows.exe
http://developer.download.nvidia.com/compute/cuda/3_1/toolkit/cudatoolkit_3.1_win_64.exe
第二步:使用CMake编译出OpenCV 3.1.0
注意要选择visual studio 12 2013 Win64.
否则会报
CUDA_nppc_LIBRARY
CUDA_nppi_LIBRARY
CUDA_npps_LIBRARY
三个环境变量问题,那是因为它们,Nvidia只提供64位库。
Core i7-4790K要编译二个多小时,请耐心等待。
"D:\sdk\opencv-3.1.0\opencv-3.1.0\include"少头文件的问题。
把“D:\sdk\opencv-3.1.0\opencv-3.1.0\modules\XXX\include”下(至少有十多个)的文件复制到
“D:\sdk\opencv-3.1.0\opencv-3.1.0\include”其中“D:\sdk\opencv-3.1.0”是我解压路径。
最后一步:
新建空的Win32 Console Solution,并修改缺省platform为Win64。
现在设置项目的属性
头文件搜索路径
D:\sdk\opencv-3.1.0\opencv-3.1.0\include;
库文件搜索路径
D:\sdk\opencv-3.1.0\opencv-3.1.0\build_vs2013\lib\Debug;
Debug模式下的依赖库
opencv_calib3d310d.lib
opencv_core310d.lib
opencv_cudaarithm310d.lib
opencv_cudabgsegm310d.lib
opencv_cudacodec310d.lib
opencv_cudafeatures2d310d.lib
opencv_cudafilters310d.lib
opencv_cudaimgproc310d.lib
opencv_cudalegacy310d.lib
opencv_cudaobjdetect310d.lib
opencv_cudaoptflow310d.lib
opencv_cudastereo310d.lib
opencv_cudawarping310d.lib
opencv_cudev310d.lib
opencv_features2d310d.lib
opencv_flann310d.lib
opencv_highgui310d.lib
opencv_imgcodecs310d.lib
opencv_imgproc310d.lib
opencv_ml310d.lib
opencv_objdetect310d.lib
opencv_photo310d.lib
opencv_shape310d.lib
opencv_stitching310d.lib
opencv_superres310d.lib
opencv_ts310d.lib
opencv_video310d.lib
opencv_videoio310d.lib
opencv_videostab310d.lib
Dll复制
"D:\sdk\opencv-3.1.0\opencv-3.1.0\build_vs2013\bin\Debug"下的DLL复制到
我们solution的Debug目录下。
下面是测试OpenCV3.1.0的源码
#include <iostream>#include <opencv2/opencv.hpp>#include <opencv2/cudaarithm.hpp>#include "counter.h"#include <iostream>using namespace std;int main(int argc, char* argv[]){try{//png图片会抛出异常cv::Mat src_host = cv::imread("C:\\Users\\kagula\\Pictures\\a.jpg", CV_LOAD_IMAGE_GRAYSCALE);startTiming();cv::cuda::GpuMat dst, src;src.upload(src_host);//cv::cuda::threshold(src, dst, 128.0, 255.0, CV_THRESH_BINARY);//cv::Mat result_host;dst.download(result_host);//Visual studio in Debug mode, Core i7-4790k, GTX960//take time is 2612.96ms, Release mode 520.587ms.cout << "take time is " << stopTiming() << "ms" << endl;//cv::imshow("Result", result_host);//cv::waitKey();cin.get();}catch (const cv::Exception& ex){std::cout << "Error: " << ex.what() << std::endl;}return 0;}
成功编译并通过。
发现OpenCV3 with CUDA要比OpenCV2 with cpu慢上千倍,主要是多了数据upload和download的时间。
[1]《在CentOS系统上编译、安装、配置OpenCV》
http://blog.csdn.net/dupei/article/details/6430766
[2]《CUDA Zone》官网地址
https://developer.nvidia.com/cuda-zone
[3]《OpenCV 3.1.0文档》
http://docs.opencv.org/3.1.0/
[4]如何编译OpenCV3.1.0写的比我细。
http://johnhany.net/2015/10/windows7-compile-opencv3-with-cuda/
补充读物
[1]《OpenACC Toolkit》
https://developer.nvidia.com/openacc
[2]一些OpenCV如何使用的介绍
http://www.opencv.org.cn
[3]《OpenCV中GPU模块使用》
http://www.cnblogs.com/dwdxdy/p/3244508.html
[4]《OpenCV学习:将图像转为二值图像(函数cvtColor和函数threshold)》
http://blog.sina.com.cn/s/blog_59fabe030101ib67.html
常见问题
Q1 The library is compiled without CUDA support in function EmptyFuncTable::mallocPitch
A
http://stackoverflow.com/questions/32774673/no-gpu-support-using-opencv-2-4-10-cuda-7-5-w10
Q1 找不到cv::gpu::threshold定义的问题
A
http://johnhany.net/2015/10/windows7-compile-opencv3-with-cuda/
补充
[1]如果要全局设置头文件和库文件搜索路径,据说可在[Visual Studio]->[View]->[Propery Manager]中设置。
有时间再测试。
0 0
- 配置OpenCV2和OpenCV3开发环境笔记
- Opencv2.4.12安装和VS2013+Opencv2.4.12开发环境配置
- Opencv2.4.12安装和VS2013+Opencv2.4.12开发环境配置
- 【OpenCV笔记】使用VS2012和OpenCV2.4.9搭建配置OpenCV开发环境
- 第一篇Opencv3学习笔记:VS2015+Opencv3.2环境配置
- 学习OpenCV2——opencv2.4.8和opencv3的安装和配置
- OpenCV3.0 +VS2010开发环境配置
- OpenCV3.1.0+VS2013开发环境配置
- OpenCV3.1.0+VS2013开发环境配置
- OpenCV3.1.0+VS2013开发环境配置
- OpenCV3.1.0+VS2015开发环境配置
- OpenCV3.1.0+VS2013开发环境配置
- OpenCV3.1.0+VS2013开发环境配置
- Win10+vs2015+opencv3.20开发环境配置
- OpenCV3.1.0+VS2013开发环境配置
- OpenCV3.3.0+VS2015开发环境配置
- OpenCV3.1.1+VS2015开发环境配置
- Win10下OpenCV3 开发环境配置
- Android 底部导航栏界面(Fragment)
- AES_ENCRYPT() AES_DECRYPT()
- 深入剖析RunLoop
- windows7下wifi共享设置
- Android Studio 快捷键
- 配置OpenCV2和OpenCV3开发环境笔记
- 如何查询某个包在maven中央仓库的位置在哪里
- 获取activity栈的最顶端的一个
- 解决AndroidStudio添加ProjectLibary后在编译时遇到的各种问题之解决方式索引(finished with non-zero exit va
- android studio插件android-butterknife-zelezny
- 行为心理学:如何识别微表情(转)
- 从框架到完整项目搭建,实战项目《约个球》(5)-为我们自己的框架导入网络的开源框架
- [Application] iTerm 2 &Oh My Zsh
- 三.学习数据结构之链表(离散存储)