申威处理器编译opencv
Ⅰ caffe windows10 vs2013怎么配置
1.配置环境
我在自己的笔记本配置的caffe,配置的环境为:Windows 7 64位 + cuda6.5 + Opencv2.49 +VS2013。假设在配置caffe之前,你已经准备好这些。
本文中将给出一些编译好的依赖库,如果你也是用的Windows 7 64位+VS2013,可以直接使用。
2.准备依赖库
在Windows下配置caffe,一个很主要的问题就是依赖库的编译。不像在Ubuntu下那么方便,在Windows下,依赖库都需要使用vs2013进行编译才能使用。下面我将介绍caffe需要的依赖库(如果你也是win7 64位+VS2013,可以直接使用我提供的依赖库)。
2.1 boost
boost可以下载源码进行编译,也可以直接下载安装文件。我使用的是后者,方便、快捷。
我使用的是:boost_1.56_0-msvc-12.0-64.exe
注意下载适合你的配置环境的boost版本即可。
下载完毕,双击运行安装文件即可。
2.2 Glog+Gflag+Protobuf+LevelDB+HDF5+LMDB+Openblas
这一部分的很多都是谷歌的开源库,不容易下载(你懂的)。所以我使用的是Neil Z. SHAO‘s Blog
提供的编译好的。
下载完,解压得到3rdparty文件夹。在下一段将会用到。
3.建立caffe工程
准备好了caffe需要的依赖库和环境之后,下面就可以建立caffe的vs项目,进行编译了。
3.1 下载caffe源码
可以从caffe的github主页下载源码。
下载地址:Caffe’s GitHub
解压文件,假设caffe源码所在目录为CAFFE_ROOT。
3.2 准备项目需要的依赖库和系统环境变量
经过上一阶段的准备,caffe项目所需的依赖库都已经准备好。
1.首先设置系统环境变量(以我的为例):
CUDA_PATH_V6_5 安装好cuda6.5之后,会自动添加环境变量CUDA_PATH_V6_5
OPENCV_2_49 D:/Tools/opencv2.49/build/
BOOST_1_56 D:/Tools/boost_1_56_0
2.将3rdparty文件夹放到CAFFE_ROOT
3.3 用vs建立caffe项目
1.用VS2013在CAFFE_ROOT下建立 win32 console application,选择空项目。
将项目的平台由32位改为64位
2.修改项目属性
项目——属性——C/C++——常规——附加包含目录
添加:
../include;
../src;
../3rdparty/include;
../3rdparty;
../3rdparty/include;
../3rdparty/include/openblas;
../3rdparty/include/hdf5;
../3rdparty/include/lmdb;
../3rdparty/include/leveldb;
../3rdparty/include/gflag;
../3rdparty/include/glog;
../3rdparty/include/google/protobuf;
项目——属相——VC++目录——包含目录
添加:
$(CUDA_PATH_V6_5)\include;
$(OPENCV_2_49)\include;
$(OPENCV_2_49)\include\opencv;
$(OPENCV_2_49)\include\opencv2;
$(BOOST_1_56)
项目——属性——链接器——常规——附加库目录
添加:
$(CUDA_PATH_V6_5)\lib\$(PlatformName);
$(OPENCV_2_49)\x64\vc12\lib;
$(BOOST_1_56)\lib64-msvc-12.0;
..\3rdparty\lib;
项目——属性——链接器——输入——附加依赖项
debug添加:
opencv_ml249d.lib
opencv_calib3d249d.lib
opencv_contrib249d.lib
opencv_core249d.lib
opencv_features2d249d.lib
opencv_flann249d.lib
opencv_gpu249d.lib
opencv_highgui249d.lib
opencv_imgproc249d.lib
opencv_legacy249d.lib
opencv_objdetect249d.lib
opencv_ts249d.lib
opencv_video249d.lib
opencv_nonfree249d.lib
opencv_ocl249d.lib
opencv_photo249d.lib
opencv_stitching249d.lib
opencv_superres249d.lib
opencv_videostab249d.lib
cudart.lib
cuda.lib
nppi.lib
cufft.lib
cublas.lib
curand.lib
gflagsd.lib
libglog.lib
libopenblas.dll.a
libprotobufd.lib
libprotoc.lib
leveldbd.lib
lmdbd.lib
libhdf5_D.lib
libhdf5_hl_D.lib
Shlwapi.lib
gflags.lib
libprotobuf.lib
leveldb.lib
lmdb.lib
libhdf5.lib
libhdf5_hl.lib
release添加:
opencv_ml249.lib
opencv_calib3d249.lib
opencv_contrib249.lib
opencv_core249.lib
opencv_features2d249.lib
opencv_flann249.lib
opencv_gpu249.lib
opencv_highgui249.lib
opencv_imgproc249.lib
opencv_legacy249.lib
opencv_objdetect249.lib
opencv_ts249.lib
opencv_video249.lib
opencv_nonfree249.lib
opencv_ocl249.lib
opencv_photo249.lib
opencv_stitching249.lib
opencv_superres249.lib
opencv_videostab249.lib
cudart.lib
cuda.lib
nppi.lib
cufft.lib
cublas.lib
curand.lib
gflags.lib
libglog.lib
libopenblas.dll.a
libprotobuf.lib
libprotoc.lib
leveldb.lib
lmdb.lib
libhdf5.lib
libhdf5_hl.lib
Shlwapi.lib
3.4 编译caffe
配置好caffe项目的属性之后,下面就可以一步一步的编译caffe了。
3.4.1 编译./src中的文件
首先,将../src文件夹中的*.cpp文件添加到工程中。
依次编译每一个*.cpp文件。
1.编译blob.cpp
直接编译时会报错,缺少文件”caffe\proto\caffe.pb.h”
这个时候需要将proto.exe放到../3rdparty/bin文件夹
将GernaratePB.bat放在../scripts文件夹
运行bat脚本文件即可生成caffe.pb.h
然后就可以成功编译。
2.编译common.cpp
直接编译这个文件,会出现关于getid和fopen_s的错误。可通过如下步骤修改:
在代码前面添加:#include <process.h>
修改项目属性:项目——属性——C/C++——预处理器——预处理器定义
添加:_CRT_SECURE_NO_WARNINGS
在代码中getid的位置进行如下修改:
#ifdef _MSC_VER
pid = getid();
#else
pid = _getid();
#endf
修改完毕之后,可以成功编译。
3.编译net.cpp
直接编译这个文件,会出现关于mkstep、close、mkdtemp的错误。需要进行如下修改:
在io.hpp头文件中添加:#include “mkstep.h”
在io.hpp头文件中,在close()的位置进行如下修改:
#ifdef _MSC_VER
close(fd);
#else
_close(fd);
#endif
在mkdtemp的位置进行如下修改:
#ifndef _MSC_VER
char* mkdtemp_result = mkdtemp(temp_dirname_cstr);
#else
errno_t mkdtemp_result = _mktemp_s(temp_dirname_cstr, sizeof(temp_dirname_cstr));
#endif
修改完毕,可以成功编译。
4.编译solver.cpp
直接编译会出现关于snprintf的错误,需要进行如下修改:
#ifdef _MSC_VER
#define snprinf sprintf_s
#endif
修改完毕,可以成功编译。
5.其他剩余的cpp文件也依次编译
3.4.2 编译./src/layers中的文件
将./src/layers中的所有的cpp和cu文件都添加到项目中。
右键点击cu文件,修改属性。
在bnll_layer.cu文件,进行如下修改:
float kBNLL_THRESHOLD = 50 ——> #define kBNLL_THRESHOLD 50.0
依次编译所有的文件。
3.4.3 编译./src/util中的文件
将./src/util中所有的文件添加到项目
1.在io.cpp中
修改ReadProtoFromBinaryFile函数
O_RDONLY ——> O_RDONLY | O_BINARY
在代码中进行如下修改:
#ifdef _MSC_VER
#define open _open
#endif
将close()改为_close()
2.在math_functions.cpp中
做如下修改:
#define __builtin_popcount __popcnt
#define __builtin_popcountl __popcnt
3.在db.cpp中
作如下修改:
#ifdef _MSC_VER
#include <direct.h>
#endif
修改CHECK_EQ
#ifdef _MSC_VER
CHECK_EQ(_mkdir(source.c_str()),0)<<”mkdir”<<source<<”failed”;
#else
CHECK_EQ(mkdir(source.c_str(),0744),0)<<”mkidr”<<source<<”failed”;
#endif
4.依次编译其他文件
3.4.4 编译./src/proto中的文件
参照上一步,将proto中的文件都添加到项目。
修改属性:
项目——属性——C/C++——预处理器——预处理器定义
添加:_SCL_SECURE_NO_WARNINGS
编译所有文件。
3.4.5 编译./tools中的文件
本文件夹下有多个cpp文件,通过它们的名字就可以知道相应的功能。添加不同的cpp文件到项目中,然后生成项目,就可以得到不同功能的exe文件。
将caffe.cpp添加到工程,生成项目,得到caffe.exe文件,可用于训练模型
将computer_image_mean.cpp添加到工程,生成项目,得到的exe文件可用于将训练样本转换为caffe使用的leveldb/lmdb数据集。
依次类推。
自此,caffe在Windows下的编译已经完毕,接下来就可以使用它来训练自己的模型了。
Ⅱ 如何在Windows下安装配置python接口的caffe
整了一晚上加一上午。网上关于python的记录较少,这里写一下。
这里的环境是WIN10+cuda v7.5 +cudnn v4 + opencv + pycharm+VS2013
使用的是GPU,我的GPU是titan16G+内存32G
首先是caffe的文件以及第三方库的编译,这里提供一个已经编译好的的连接,我就是从那里下好然后编译完毕的。
点击打开链接 happynear的
然后就是如何编译python接口。
1、首先先生成两个python文件,在src/caffe/proto/extract_proto.bat 里生成caffe_pb2.py 这个之后有用。
2、然后打开已经给好的caffe/buildVS2013,打开里面已经有的工程文件,正常的情况下应该是有7个工程,选中pycaffee单独作为要编译的项目。如图所示:
把pycaffe作为单启动。注意需要在release x64位下编译。
如果没有这个的话,就将这个文件夹里python文件夹中的项目加入即可。如果没有python项目,就自己建一个,将python文件夹里的cpp文件加入就可以了。
3、选择pycaffe的属性,将配置属性下的VC++目录中的包含目录和库目录填上你python所在的include和libs 再在C/C++的目录下的附加包含目录一项中添加
以我的python为例。D:/python27/Lib;D:/python/include/ 以及D:/Python27/Lib/site-packages/numpy/core/include 如果你安装了CUDNN这里可以在预处理器那里把USE_CUDNN加上,同时在LINKER的输入目录下的附加依赖库中加入cudnn的lib文件。
3、开始编译即可。这里要注意一定要和caffe、caffelib在一个项目里编译,否则会报错。
4、编译成功后会在caffe/python/caffe下生成_caffe.pyd 是打不开的
5、配置python环境:需要几个额外库
Cython>=0.19.2
numpy>=1.7.1
scipy>=0.13.2
scikit-image>=0.9.3
matplotlib>=1.3.1
ipython>=3.0.0
h5py>=2.2.0
leveldb>=0.191
networkx>=1.8.1
nose>=1.3.0
pandas>=0.12.0
python-dateutil>=1.4,<2
protobuf>=2.5.0
python-gflags>=2.0
pyyaml>=3.10
Pillow>=2.3.0
six>=1.1.0
其中numpy要装MKL版本的,不然scipy装上了BLAS不能用
leveldb没有windows版本的,不过我找到了可以使用的办法。见这个博客:
点击打开链接
如果有pip install 装不上的,可以上这个网站找 wheel文件安装就可以了
点击打开链接
6、最后把目录中python下的caffe文件夹复制到python27/Lib/site-packages就可以了。
测试的时候只需要在控制台下输入import caffe 看能载入就知道成功了:)
Ⅲ 如何在Vivado中充分利用OpenCV和HLS
本文通过对OpenCV中图像类型和函数处理方法的介绍,通过设计实例描述在vivadoHLS中调用OpenCV库函数实现图像处理的几个基本步骤,完成从OpenCV设计到RTL转换综合的开发流程。
开源计算机视觉 (OpenCV) 被广泛用于开发计算机视觉应用,它包含2500多个优化的视频函数的函数库并且专门针对台式机处理器和GPU进行优化。OpenCV的用户成千上万,OpenCV的设计无需修改即可在 Zynq器件的ARM处理器上运行。但是利用OpenCV实现的高清处理经常受外部存储器的限制,尤其是存储带宽会成为性能瓶颈,存储访问也会限制功耗效率。使用VivadoHLS高级语言综合工具,可以轻松实现OpenCV C++视频处理设计到RTL代码的转换,输出硬件加速器或者直接在FPGA上实现实时视频处理功能。同时,Zynq All-programmable SOC是实现嵌入式计算机视觉应用的极好方法,很好解决了在单一处理器上实现视频处理性能低功耗高的限制,Zynq高性能可编程逻辑和嵌入式ARM内核,是一款功耗优化的集成式解决方案。
1 OpenCV中图像IplImage, CvMat, Mat 类型的关系和VivadoHLS中图像hls::Mat类型介绍
OpenCv中常见的与图像操作有关的数据容器有Mat,cvMat和IplImage,这三种类型都可以代表和显示图像,但是,Mat类型侧重于计算,数学性较高,openCV对Mat类型的计算也进行了优化。而CvMat和IplImage类型更侧重于“图像”,opencv对其中的图像操作(缩放、单通道提取、图像阈值操作等)进行了优化。在opencv2.0之前,opencv是完全用C实现的,但是,IplImage类型与CvMat类型的关系类似于面向对象中的继承关系。实际上,CvMat之上还有一个更抽象的基类----CvArr,这在源代码中会常见。
1.1 OpenCV中Mat类型:矩阵类型(Matrix)。
Ⅳ 想学opencv对电脑配置都有哪些要求
opencv对电脑配置没有严格要求,能运行VS就可以
当然cpu处理器、硬盘速度影响编译速度而已
你可以加入驱动人生官方q群咨询下,客服会帮你解答的,无论是啥电脑问题都能知晓。