2021/3/10
再次进行交叉编译OpenCV-4.5.1进入RK3399开发板。
参考下面链接:
https://blog.csdn.net/tajon1226/article/details/100606316
https://blog.csdn.net/ajianyingxiaoqinghan/article/details/70194392
安装依赖
1. sudo apt-get install build-essential
2. sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
apt-get install libgtk2.0-dev pkg-config
(Ubuntu18.04下安装OpenCv依赖包libjasper-dev无法安装的问题
sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt install libjasper1 libjasper-dev
成功的解决了问题,其中libjasper1是libjasper-dev的依赖)
3. sudo apt-get install python3-dev python3-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
将boostdesc_bgm文件拷贝到 /usr/local/arm/opencv-3.4.5/opencv_contrib-3.4.5/modules/xfeatures2d/src
打开 gedit ~/.bashrc
export PKG_CONFIG_PATH=/usr/local/arm/opencv-3.4.0/install/lib/pkgconfig:$PKG_CONFIG_PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/arm/opencv-3.4.0/install/
export CPLUS_INCLUDE_PATH=/usr/local/arm/opencv-3.4.0/install/include:$CPLUS_INCLUDE_PATH
export PATH=$PATH:/usr/local/arm/compiler/bin
export OPENCV_DEPEND=/usr/local/arm/opencv-3.4.0/install
export OPENCV_INSTALL=/usr/local/arm/opencv-3.4.0
所有文件在/usr/local/arm中搞。
我用的opencv3.4和交叉编译器如下
1.在opencv3.4中建立release和install,还有build。
2.在release中cmake-gui(没有的自己安装)
交叉编译cross-compile-tool换成compiler,
3.打勾去勾
勾选BUILD_JPEG、BUILD_PNG还有ZLIB
MAKE_BUILD_TYPE 输入Release
MAKE_INSTALL_PREFIX 选择你想要安装的目录,这里是源码下刚才创建的install目录
去掉 WITH_CUDA
去掉 WITH_1394
去掉 WITH_GSTREAMER
去掉 WITH_LIBV4L
去掉 WITH_TIFF
去掉 BUILD_OPENEXR
去掉 WITH_OPENEXR
去掉 BUILD_opencv_ocl
去掉 WITH_OPENCL
编译后,用gedit打开release中的CMakeCache.txt:
CMAKE_EXE_LINKER_FLAGS选项本来为空,此时在后面加上:-pthread -ldl -lrt
再次回到cmake-gui
OPENCV_GENERATE_PKGCONFIG=YES
:OpenCV4 以上版本默认不使用 pkg-config
,该编译选项开启生成 opencv4.pc
文件,支持 pkg-config
功能。
然后再次configure和generate。
4. sudo make -j8
sudo make install
第一部分结束----------------------------------------------------------------------------------------------------------------------------------
5.把install中的lib文件夹和include文件夹的内容分别复制到compiler文件中arm-linux-gnueabihf下的lib和include中。
第二部分结束----------------------------------------------------------------------------------------
用一个测试文件二值化图像并保存。
#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/calib3d/calib3d.hpp>
using namespace std;
using namespace cv;
int main()
{
Mat imag, result;
imag = imread("mv3.jpg",16);
result = imag.clone();
threshold(imag, result, 100, 250, THRESH_OTSU);
imwrite("huidu.jpg",result);
return 0;
}
arm-linux-gnueabihf-g++ -o hd hd.cpp `pkg-config --cflags --libs opencv`
hd为.cpp的名字。
用TF卡把执行文件和compiler的arm-linux-gnueabihf中的lib文件夹一起搞到板子的/lib里。执行文件获取权限
chmod 777 hd
然后 ./hd执行。会生成一个huidu.jpg
结束。