Caffe使用ROS自带Opencv

软硬件环境:Ubuntu 16.04 CUDA8.0 CUDNN5.1.10 ROS-Kinetic Caffe
解决问题:不再单独为caffe编译安装一次opencv

1.ROS自带OpenCV

(1)版本:Kinetic版本自带opencv-3.3.1
(2)pkg-config配置:
opencv.pc——在/usr/local/lib/pkgconfig目录下:

# Package Information for pkg-config

prefix=/opt/ros/kinetic
exec_prefix=${prefix}
libdir=${exec_prefix}/lib/x86_64-linux-gnu
includedir_old=${prefix}/include/opencv-3.3.1-dev/opencv
includedir_new=${prefix}/include/opencv-3.3.1-dev

Name: OpenCV
Description: Open Source Computer Vision Library
Version: 3.3.1
Libs: -L${exec_prefix}/lib/x86_64-linux-gnu -lopencv_stitching3 -lopencv_superres3 -lopencv_videostab3 -lopencv_aruco3 -lopencv_bgsegm3 -lopencv_bioinspired3 -lopencv_ccalib3 -lopencv_cvv3 -lopencv_dpm3 -lopencv_face3 -lopencv_photo3 -lopencv_fuzzy3 -lopencv_hdf3 -lopencv_img_hash3 -lopencv_line_descriptor3 -lopencv_optflow3 -lopencv_reg3 -lopencv_rgbd3 -lopencv_saliency3 -lopencv_stereo3 -lopencv_structured_light3 -lopencv_viz3 -lopencv_phase_unwrapping3 -lopencv_surface_matching3 -lopencv_tracking3 -lopencv_datasets3 -lopencv_text3 -lopencv_dnn3 -lopencv_plot3 -lopencv_xfeatures2d3 -lopencv_shape3 -lopencv_video3 -lopencv_ml3 -lopencv_ximgproc3 -lopencv_calib3d3 -lopencv_features2d3 -lopencv_highgui3 -lopencv_videoio3 -lopencv_flann3 -lopencv_xobjdetect3 -lopencv_imgcodecs3 -lopencv_objdetect3 -lopencv_xphoto3 -lopencv_imgproc3 -lopencv_core3
Libs.private: -ldl -lm -lpthread -lrt
Cflags: -I${includedir_old} -I${includedir_new}

根据上述文件指引找到opencv的头文件目录和库目录:

/opt/ros/kinetic/include/opencv-3.3.1-dev/opencv
/opt/ros/kinetic/include/opencv-3.3.1-dev

/opt/ros/kinetic/lib/x86_64-linux-gnu

2. 编译Caffe时使之找到opencv

普通caffe编译(有独立编译安装opencv):给出参考网址链接——https://caffe.berkeleyvision.org/installation.html

为节约安装opencv的时间和防止可能出现的不同源opencv冲突,作额外修改:

(1)修改makefile.config——makefile的配置文件,保存有make的配置信息,这里给出参考配置:
USE_CUDNN := 1
OPENCV_VERSION := 3
CUDA_DIR := /usr/local/cuda
CUDA_ARCH := -gencode arch=compute_30,code=sm_30 \
		-gencode arch=compute_35,code=sm_35 \
		-gencode arch=compute_50,code=sm_50 \
		-gencode arch=compute_50,code=compute_50 \
		-gencode arch=compute_52,code=compute_52 \
		-gencode arch=compute_62,code=compute_62
BLAS := atlas
PYTHON_INCLUDE := /usr/include/python2.7 \
		/usr/lib/python2.7/dist-packages/numpy/core/include
PYTHON_LIB := /usr/lib
WITH_PYTHON_LAYER := 1
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial /opt/ros/kinetic/include/opencv-3.3.1-dev/opencv /opt/ros/kinetic/include/opencv-3.3.1-dev
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial /opt/ros/kinetic/lib/x86_64-linux-gnu
USE_PKG_CONFIG := 1
BUILD_DIR := build
DISTRIBUTE_DIR := distribute
TEST_GPUID := 0
Q ?= @

重点修改处:
INCLUDE_DIRS加上第一节找到的opencv头文件目录
LIBRARY_DIRS加上相应的opencv库文件目录
USE_PKG_CONFIG开关打开

(2)修改Makefile

Line 195-Line202

ifeq ($(USE_OPENCV), 1)
	LIBRARIES += opencv_core opencv_highgui opencv_imgproc

	ifeq ($(OPENCV_VERSION), 3)
		LIBRARIES += opencv_imgcodecs
	endif

endif

修改为ros-kinetic自带opencv库的名字:

ifeq ($(USE_OPENCV), 1)
	LIBRARIES += opencv_core3 opencv_highgui3 opencv_imgproc3

	ifeq ($(OPENCV_VERSION), 3)
		LIBRARIES += opencv_imgcodecs3
	endif

endif

编译过程出现的其他问题请通过google解决
2020.11.12 caffe-segnet-cudnn5安装过程总结留存

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值