Linux系统(离线或者在线)编译opencv4.0.1、opencv4.0.1 contrib及匹配测试代码

9 篇文章 1 订阅
6 篇文章 0 订阅

临时接到任务,项目要部署到centos系统,编译匹配模块,我一年前有一次编译经验,直接查看以前编译的博客:

redhat 5.4安装配置opencv
有下面几个区别:
1、这次只是安装的opencv版本和功能不大一样,这次是4.0.1版本;
2、上次主要针对opencv视频模块,这次主要针对opencv的匹配模块;
3、上次我记得花了大概一个星期搞定,这次花了小半天安装,大半天调试问题。
因为这次的问题比较多,所以也详细记录下来,以便自己或者过来者查阅使用。

1、编译前准备,下载好安装包文件:

1.1、安装包

1、cmake工具包,查看我以前写的另一篇帖子
2、opencv4.0.1安装包
3、opencv4.0.1 contrib安装包,链接:https://github.com/opencv/opencv_contrib/releases?after=3.4.9

4、原contrib缺少的文件,见参考链接1,可以通过原作者下载链接,或者百度网盘下载链接:https://pan.baidu.com/s/1BeYF8kqEZLAJYQj-MvxpmA 提取码:e1wc来下载
我汇总上面四个文件(粉丝免费下载):点击下载

1.2、解压安装好文件

新建一个文件夹software,把三个压缩包放到这个文件夹中,分别解压三个压缩包到当前文件,
解压后如下图:
在这里插入图片描述
把第四个文件加压后放到opencv_contrib-4.0.1/modules/xfeatures2d/src文件夹里
在这里插入图片描述

1.3、如果不想编译,请核对系统版本后去我的链接进行下载就行了

系统版本:
在这里插入图片描述
下载地址(粉丝免费下载):点击下载
下载的朋友可以直接跳过苦逼的编译过程了

2、开始编译

2.1、安装cmake

偷懒了,搬用以前的帖子,如下图:

2.2、在线编译opencv库

如果机器可以上网,则可以进行在线安装需要的包进行安装,安装方法如下

2.2.1、编写install-opencv-and-contrib.sh文件

在softwar目录下建立install-opencv-and-contrib.sh文件,通过命令自动进行cmake编译
参考链接
因为我提前把安装包都下载了,所以把第3条的下载部分注释了(带两个#号的是注释部分),在FLAGS下面增加了两段代码

#下面两句话就是编译contrib的设置,否则会编译出exe运行的时候有This algorithm is patented and is excluded in this configuration错误
FLAGS="${FLAGS} -DOPENCV_ENABLE_NONFREE=ON"
FLAGS="${FLAGS} -DOPENCV_EXTRA_MODULES_PATH=${CONTRIB_MODULES_DIR}"


#要结尾时候增加了下面一行代码,解决了一个错误(忘了啥错误...)
cmake -D BUILD_TIFF=ON -D ENABLE_PRECOMPILED_HEADERS=OFF ..

总结如下:


# VERSION TO BE INSTALLED

OPENCV_VERSION='3.4.5'

OPENCV_CONTRIB=1

OPENCV_DIR_NAME=opencv-${OPENCV_VERSION}
CONTRIB_DIR_NAME=opencv_contrib-${OPENCV_VERSION}

CURRENT_DIR=`pwd`
CONTRIB_MODULES_DIR="${CURRENT_DIR}/${CONTRIB_DIR_NAME}/modules"

FLAGS=
FLAGS="${FLAGS} -DBUILD_JAVA=OFF"
FLAGS="${FLAGS} -DBUILD_opencv_java=OFF"
FLAGS="${FLAGS} -DCMAKE_CXX_COMPILER=g++"
FLAGS="${FLAGS} -DCMAKE_C_COMPILER=gcc"
FLAGS="${FLAGS} -DBUILD_TESTS=OFF"
#下面两句话就是编译contrib的设置
FLAGS="${FLAGS} -DOPENCV_ENABLE_NONFREE=ON"
FLAGS="${FLAGS} -DOPENCV_EXTRA_MODULES_PATH=${CONTRIB_MODULES_DIR}"

# 1. KEEP UBUNTU OR DEBIAN UP TO DATE

sudo apt-get -y update
# sudo apt-get -y upgrade       # Uncomment this line to install the newest versions of all packages currently installed
# sudo apt-get -y dist-upgrade  # Uncomment this line to, in addition to 'upgrade', handles changing dependencies with new versions of packages
# sudo apt-get -y autoremove    # Uncomment this line to remove packages that are now no longer needed


# 2. INSTALL THE DEPENDENCIES

# Build tools:
sudo apt-get install -y build-essential cmake

# GTK
sudo apt-get install -y libgtk2.0-dev

# GUI (if you want to use GTK instead of Qt, replace 'qt5-default' with 'libgtkglext1-dev' and remove '-DWITH_QT=ON' option in CMake):
sudo apt-get install -y qt5-default libvtk6-dev

# Media I/O:
sudo apt-get install -y zlib1g-dev libjpeg-dev libwebp-dev libpng-dev libtiff5-dev libjasper-dev libopenexr-dev libgdal-dev

# Video I/O:
sudo apt-get install -y libdc1394-22-dev libavcodec-dev libavformat-dev libswscale-dev libtheora-dev libvorbis-dev libxvidcore-dev libx264-dev yasm libopencore-amrnb-dev libopencore-amrwb-dev libv4l-dev libxine2-dev

# Parallelism and linear algebra libraries:
sudo apt-get install -y libtbb-dev libeigen3-dev

# Python:
sudo apt-get install -y python-dev python-tk python-numpy python3-dev python3-tk python3-numpy

# Java:
sudo apt-get install -y ant default-jdk

# Documentation:
sudo apt-get install -y doxygen


# 3. INSTALL THE LIBRARY

# install unzip wget
##sudo apt-get install -y unzip wget

##wget https://github.com/opencv/opencv/archive/${OPENCV_VERSION}.zip -O ${OPENCV_DIR_NAME}.zip
##unzip -o ${OPENCV_DIR_NAME}.zip
##rm    ${OPENCV_DIR_NAME}.zip

##if [ ${OPENCV_CONTRIB} -eq 1 ]; then
##	wget https://github.com/opencv/opencv_contrib/archive/${OPENCV_VERSION}.zip -O ##${CONTRIB_DIR_NAME}.zip
##	unzip -o ${CONTRIB_DIR_NAME}.zip
##	rm    ${CONTRIB_DIR_NAME}.zip
##	FLAGS="${FLAGS} -DOPENCV_EXTRA_MODULES_PATH=${CONTRIB_MODULES_DIR}"
##fi

# mv opencv-${OPENCV_VERSION} OpenCV
# cd OpenCV

cd ${OPENCV_DIR_NAME}

mkdir -p build
cd    build

echo "cmake ${FLAGS} .."

cmake -D BUILD_TIFF=ON -D ENABLE_PRECOMPILED_HEADERS=OFF ..

cmake ${FLAGS} ..

make -j4
sudo make install
sudo ldconfig

2.2.2、使用下面命令运行编译sh
sh install-opencv-and-contrib.sh

2.3、离线编译opencv库

有时候我们机器可能不能上网,只能进行离线编译,很多东西不能通过apt-get install在线安装,那么就可以按照下面步骤进行编译:
说明:/share/bin/opencv4.0.1_Build 为根目录,该目录下存在opencv-4.0.1文件夹(opencv主文件夹)和opencv-contrib-4.0.1文件夹(附加的算法文件夹)

cd /share/bin/opencv4.0.1_Build/opencv-4.0.1
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE="Release" -DCMAKE_INSTALL_PREFIX="/usr/local" -DOPENCV_ENABLE_NONFREE=ON -DOPENCV_EXTRA_MODULES_PATH=/share/bin/opencv4.0.1_Build/opencv_contrib-4.0.1/modules ..
make -j4

上面cmake命令时需要注意有些值需要双引号括着,否则编译出来用不了。

上面执行过程中遇到三个问题:
问题1:
c++: error: unrecognized command-line option ‘–param=ipcp-unit-growth=100000’; did you mean ‘–param=ipa-cp-unit-growth=’?
解决方案:
参考连接4
我直接粘贴出来如下:
在这里插入图片描述
问题2:
提示找不到boostdesc_bgm.i文件,异常中断
解决方案:把第四个文件加压后放到opencv_contrib-4.0.1/modules/xfeatures2d/src文件夹里
在这里插入图片描述
问题3:
提示找不到test_detectors_invariance.impl.hpp 头文件路径,如下图
在这里插入图片描述
解决方案:根据提示的错误文件路径,打开test_rotation_and_scale_invariance.cpp文件,将几个hpp头文件改成绝对路径,test_detectors_invariance.impl.hpp 文件绝对路径前缀是在“/share/bin/opencv4.0.1_Build/opencv-4.0.1/modules/xfeatures2d/test”文件夹下
将两个cpp引用的头文件修改为绝对路径后编译成功

编译出来的成果位置:
本来按照上面-DCMAKE_INSTALL_PREFIX="/usr/local"的设置,输出成果应该在/usr/local文件夹,但是找了半天并没有找到,有些opencv的库,根据新建时间判别,也不是我编译的,所以经过仔细查找确定了成果位置,主要是include文件夹比较难整理

bin文件夹:

/share/bin/opencv4.0.1_Build/opencv-4.0.1/build/bin

lib文件夹

/share/bin/opencv4.0.1_Build/opencv-4.0.1/build/lib

include文件夹

include文件夹比较难搞,查看/share/bin/opencv4.0.1_Build/opencv-4.0.1/build/include文件夹下没有头文件,仔细研究发现编译后没有集中放进来,所以只能从其他文件夹手工合并进/share/bin/opencv4.0.1_Build/opencv-4.0.1/build/include
首先建立/share/bin/opencv4.0.1_Build/opencv-4.0.1/build/include/opencv2为根目录
分别将其他各个模块的include/opencv2中的文件拷贝进来,各个模块主要集中在三块
第一块:/share/bin/opencv4.0.1_Build/opencv-4.0.1/include/opencv2 下的opencv.hpp文件
第二块:/share/bin/opencv4.0.1_Build/opencv-4.0.1/modules 文件夹下各个子文件夹下的include/opencv2 文件夹下所有文件及文件夹
第三块:/share/bin/opencv4.0.1_Build/opencv_contrib-4.0.1/modules 文件夹下各个子文件夹下的include/opencv2 文件夹下所有文件及文件夹

最终的include文件夹就是手工合并的
/share/bin/opencv4.0.1_Build/opencv-4.0.1/build/include/opencv2

运行程序前还要进行LD_LIBRARY_PATH环境变量设置,设置方法如下

export LD_LIBRARY_PATH=/share/bin/opencv4.0.1_Build/opencv-4.0.1/build/lib:${LD_LIBRARY_PATH}

2.4、解决pkg-config无法发现的问题

通过pkg-config查看opencv信息时会出错Package opencv was not found in the pkg-config search path.通过查看帖子解决了,具体设置如下

#1-进入设置目录
cd /usr/local/lib/pkgconfig
#2-如果没有这个文件则新建这个文件
vim opencv.pc

opencv.pc内容

#设置opencv安装目录,默认安装在/usr/local
prefix=/usr/local
exec_prefix=${prefix}
#设置包含目录
includedir=${prefix}/include
#设置opencv 的静态库lib目录(需cd到对应目录检查确认,根据实际情况而定)
libdir=${exec_prefix}/lib64

Name: opencv
Description: The opencv library
Version:4.0.1
#设置opencv 的安装include目录(需cd到对应目录检查确认,根据实际情况而定)
Cflags: -I${includedir}/opencv4
#下面的这些是包含静态库,-lopencv_xfeatures2d 匹配算法需要用到的,没有设置则会在编译的时候出错,提示“_ZN2cv11xfeatures2d4SURF6createEdiibb”错误
Libs: -L${libdir} -lopencv_shape -lopencv_stitching -lopencv_objdetect -lopencv_superres -lopencv_videostab -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_video -lopencv_photo -lopencv_ml -lopencv_imgproc -lopencv_flann  -lopencv_core -lopencv_xfeatures2d

查看libs目录下安装的opencv库
在这里插入图片描述
最后要导入目录到环境变量中,不会使用export命令的建议不要轻易使用,搞清楚原理再使用。
这次差点栽跟头了,错误样例(网上查到的写法):

export  PKG_CONFIG_PATH=/usr/local/lib/pkgconfig

上面代码的确可以导入变量进去,但是如果PKG_CONFIG_PATH以前存在变量则会全部覆盖。

小故事开始,还是在这次编译opencv的过程中
我查到了是这样export改写环境变量,然后想当然用这个方式改写了PATH变量,导致我的所有命令用不了,幸好我查看了这个帖子,在修改PATH命令的时候显示了一下PATH变量以前的内容,代码如下:

$ echo $PATH

然后所有变量都显示数出来了,后来追加变量后导致我的ls命令都用不了,开始以为是我命令记错了,后来发现很多命令都用不了了(后背一阵冷汗…),冷静下来仔细分析问题,回想起来我上面就做了一个导入操作,可能导入变量有问题,用上面命令再显示了一遍PATH变量内容,发现以前的都丢失了,仔细分析后发现了export正确写法如下

export  PATH=$PATH:/usr/local/lib/pkgconfig
#$PATH:代表的就是以前的变量,再后面接了一个“:/usr/local/lib/pkgconfig”操作而已,$PATH放在前面放在后面都没有太大问题,中间用冒号隔开

因为在开始输出过这个变量值,所以直接再用这个方法追加上去就完事了
小故事完毕============================

所以我认为下面正确写法才标准,把以前的变量都带进去了,至少有了这个习惯在改写其他环境变量时候不会出大问题。

export  PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig

设置完后,可以通过下面命令查看头文件目录和lib文件夹和依赖库名称

pkg-config opencv --cflags
pkg-config opencv --libs

在这里插入图片描述
至此,运行上面两句话后包含头文件目录、包含库目录、包含库文件都全部输出了,并且核对无误后,则全部的编译过程就完成了,可以跳到“ 附录:测试程序代码,SURF_main.cpp”栏进行测试opencv是否部署成功

遇到的问题清单

问题1、提示“./MatchDemo_Exe: error while loading shared libraries: libopencv_shape.so.4.0: cannot open shared object file: No such file or directory”

libopencv_shape.so.4.0这个文件在/usr/local/lib64里,只用在shell中运行下面两行就行了,也可以设置在环境变量中

export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/lib64

问题2、编译OpenCV以及openc_contrib提示缺少boostdesc_bgm.i文件出错的解决

见参考链接1和要下载准备文件4

问题3、编译出来exe运行出错:This algorithm is patented and is excluded in this configuration; Set OPENCV_ENABLE_NONFREE CMake option and rebuild the library in function ‘create’

问题截图
在这里插入图片描述
百度搜到的问题,千篇一律是python版本的,让你卸载新版本安装老版本问题解决,看着都烦,牛头不对马嘴,后来在必应上搜索出来了灵感,测试成功的
我这个是Linux系统C++使用的opencv版本编译问题,根据逻辑推断应该改变sh脚本中FLAGS的变量设置,本来是很早想到了这里设置,一直把“-DOPENCV_ENABLE_NONFREE”前面的-D没有带上,所以总是复现这个问题,仔细检查后,加上-D编译出来的exe可以直接运行,这里消耗了我一两个小时时间才查出来。

编译的sh脚本增加下面两句话,重新编译运行

FLAGS="${FLAGS} -DOPENCV_ENABLE_NONFREE=ON"
FLAGS="${FLAGS} -DOPENCV_EXTRA_MODULES_PATH=${CONTRIB_MODULES_DIR}"

问题4、g++编译出问题,出现test.c:(.text+0xc7):对‘cv::_InputArray::_InputArray(cv::Mat const&)’

g++后面带 -std=c++11 ,然后编译主程序cpp,如下一个opencv程序编译样例:

g++  -std=c++11  matchDemo.cpp   `pkg-config --cflags --libs opencv` 

问题5、undefined reference to symbol '_ZN2cv11xfeatures2d4SURF6createEdiibb’错误

编译的时候增加 -lopencv_xfeatures2d,带入静态库问题解决。主要是在2.4步骤设置opencv.pc的时候设置漏了静态库导致的,可以改变opencv.pc文件,也可以在编译后面追加 -lopencv_xfeatures2d问题解决。

g++  -std=c++11  matchDemo.cpp   `pkg-config --cflags --libs opencv`   -lopencv_xfeatures2d

没有带入编译的静态库,在编译的时候加上

问题6、sudo: no valid sudoers sources found, quitting sudo:unable to initialize policy plugin 错误提示

问题截图如下图
在这里插入图片描述
解决方案:

在root下执行:
chmod u-w /etc/sudoers
或
chmod 440 /etc/sudoers

附录:

附录1、测试程序代码,SURF_main.cpp:

#include "opencv2/opencv.hpp"
#include "opencv2/xfeatures2d.hpp"
//#include <time.h>

int main()
{
	cv::Mat imageL = cv::imread("/home/ljzh/zph/hua.jpg");//img
	cv::Mat imageR = cv::imread("/home/ljzh/zph/hua2.jpg");//imgR.bmp

	//SIFT
	//cv::Ptr<cv::xfeatures2d::SIFT> sift = cv::xfeatures2d::SIFT::create();//sift
	//ORB
	//cv::Ptr<cv::ORB> orb = cv::ORB::create();
	//SURF
	cv::Ptr<cv::xfeatures2d::SURF> surf = cv::xfeatures2d::SURF::create();

	std::vector<cv::KeyPoint> keyPointL, keyPointR;
	

	surf->detect(imageL, keyPointL);//51.262000 seconds/n 27761 points

	surf->detect(imageR, keyPointR);

	
	cv::Mat keyPointImageL;
	cv::Mat keyPointImageR;
	drawKeypoints(imageL, keyPointL, keyPointImageL, cv::Scalar::all(-1), cv::DrawMatchesFlags::DRAW_RICH_KEYPOINTS);
	drawKeypoints(imageR, keyPointR, keyPointImageR, cv::Scalar::all(-1), cv::DrawMatchesFlags::DRAW_RICH_KEYPOINTS);

//	cv::namedWindow("KeyPoints of imageL");
//	cv::namedWindow("KeyPoints of imageR");

	cv::imwrite("../imageL_Kp.jpg", keyPointImageL);
	cv::imwrite("../imageR_Kp.jpg", keyPointImageR);

	
	cv::Mat despL, despR;
	surf->detectAndCompute(imageL, cv::Mat(), keyPointL, despL);//
	//surf->compute(imageL, keyPointL, despL);//
	surf->detectAndCompute(imageR, cv::Mat(), keyPointR, despR);

	std::vector<cv::DMatch> matches;

	if (despL.type() != CV_32F || despR.type() != CV_32F)
	{
		despL.convertTo(despL, CV_32F);
		despR.convertTo(despR, CV_32F);
	}

	cv::Ptr<cv::DescriptorMatcher> matcher = cv::DescriptorMatcher::create("FlannBased");
	matcher->match(despL, despR, matches);

	double maxDist = 0;
	for (int i = 0; i < despL.rows; i++)
	{
		double dist = matches[i].distance;
		if (dist > maxDist)
			maxDist = dist;
	}

	std::vector< cv::DMatch > good_matches;
	for (int i = 0; i < despL.rows; i++)
	{
		if (matches[i].distance < 0.5*maxDist)
		{
			good_matches.push_back(matches[i]);
		}
	}



	cv::Mat imageOutput;
	cv::drawMatches(imageL, keyPointL, imageR, keyPointR, good_matches, imageOutput);

//	cv::namedWindow("picture of matching");
	cv::imwrite("matching.jpg", imageOutput);
//	cv::waitKey(0);
	return 0;
}

测试程序编译方式1:
匹配的测试程序,使用surf算法,编译方式1(我用过的):

g++ -std=c++11 `pkg-config opencv --cflags` SURF_main.cpp -o MatchDemo_Exe `pkg-config opencv --libs` -lopencv_xfeatures2d

编译测试代码命令编译方式2(我没有用过,感觉没啥问题):

g++ -std=c++11 `pkg-config opencv --cflags` SURF_main.cpp -o Match_Exe `pkg-config opencv --libs`  -lopencv_xfeatures2d

生成可执行程序Match_Exe
运行Match_Exe代码

./Match_Exe

啥?不会编译Linux程序,参考我以前写的几个帖子,如果全部看完,对付Linux系统程序编译绝对没有问题
1、Linux下g++ 编译opencv demo及其注意事项
2、Linux下cmake 编译opencv demo 2种方法及其注意事项
3、Linux cmake系统学习

附录2:测试样本

测试图片1
在这里插入图片描述
测试图片2
在这里插入图片描述

生成测试图片
在这里插入图片描述

参考链接:

1、编译OpenCV以及openc_contrib提示缺少boostdesc_bgm.i文件出错的解决
2、linux 下 opencv_contrib 源代码编译方法
3、g++编译时,出现test.c:(.text+0xc7):对‘cv::_InputArray::_InputArray(cv::Mat const&)’未定义的引用
4、树莓派4B上配置Opencv

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要基于 Android 的 OpenCV 4.0.1 和 OpenCV Contrib 4.0.1 进行编译,可以按照以下步骤进行: 1. 下载 OpenCV 4.0.1 和 OpenCV Contrib 4.0.1 的源代码: ``` git clone https://github.com/opencv/opencv.git cd opencv git checkout 4.0.1 cd .. git clone https://github.com/opencv/opencv_contrib.git cd opencv_contrib git checkout 4.0.1 ``` 2. 安装 Android NDK 和 Android SDK,并设置相应的环境变量。 3. 在 opencv 目录下创建一个 build 目录,并进入该目录: ``` mkdir build cd build ``` 4. 运行以下命令,生成 OpenCV Android 库: ``` cmake -DANDROID_ABI=armeabi-v7a \ -DANDROID_PLATFORM=android-21 \ -DANDROID_TOOLCHAIN=clang \ -DANDROID_STL=c++_static \ -DWITH_OPENCL=OFF \ -DWITH_IPP=OFF \ -DWITH_TBB=OFF \ -DWITH_MATLAB=OFF \ -DWITH_CUDA=OFF \ -DWITH_GTK=OFF \ -DBUILD_opencv_apps=OFF \ -DBUILD_ANDROID_EXAMPLES=OFF \ -DBUILD_ANDROID_PROJECTS=OFF \ -DBUILD_DOCS=OFF \ -DBUILD_EXAMPLES=OFF \ -DBUILD_PACKAGE=OFF \ -DBUILD_PERF_TESTS=OFF \ -DBUILD_TESTS=OFF \ -DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_TOOLCHAIN_FILE=../../android.toolchain.cmake \ ../ ``` 其中,`ANDROID_ABI` 表示 Android 平台架构,这里设置为 `armeabi-v7a`,表示 ARMv7 架构;`ANDROID_PLATFORM` 表示 Android 平台版本,这里设置为 `android-21`;`ANDROID_TOOLCHAIN` 表示使用的工具链,这里设置为 `clang`;`ANDROID_STL` 表示使用的 C++ 标准库,这里设置为 `c++_static`,表示静态链接;`WITH_OPENCL`、`WITH_IPP`、`WITH_TBB`、`WITH_MATLAB`、`WITH_CUDA`、`WITH_GTK` 分别表示是否启用 OpenCL、IPP、TBB、MATLAB、CUDA、GTK 等功能,这里都设置为 `OFF`;`BUILD_opencv_apps`、`BUILD_ANDROID_EXAMPLES`、`BUILD_ANDROID_PROJECTS`、`BUILD_DOCS`、`BUILD_EXAMPLES`、`BUILD_PACKAGE`、`BUILD_PERF_TESTS`、`BUILD_TESTS` 分别表示是否编译 OpenCV 应用程序、Android 示例、Android 项目、文档、示例、打包、性能测试测试,这里都设置为 `OFF`;`OPENCV_EXTRA_MODULES_PATH` 表示 OpenCV Contrib 目录的路径;`CMAKE_BUILD_TYPE` 表示编译类型,这里设置为 `Release`;`CMAKE_TOOLCHAIN_FILE` 表示使用的交叉编译工具链文件。 5. 运行以下命令,编译生成 OpenCV Android 库: ``` make -j4 ``` 其中,`-j4` 表示使用 4 个核心进行编译。 6. 在 build 目录下会生成一个 `sdk` 目录,其中包含编译好的 OpenCV Android 库。 可以将该库导入到 Android Studio 中,然后在项目中使用该库提供的函数进行开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值