0.1 github上获取opencv和opencv_contrib源码(不用扩展包可以不下)
0.2 安装cmake-gui pkg-config
0.3 建立好交叉编译环境gcc&g++
本文是以没有安装其他文章如Reference[1][2][3]中的各种前置依赖情况下进行的 暂时未出现意外
1.1cmake配置勾选请参考[3]中的配置
1.2cmake配置一定要勾选generate pkg config
1.3 点击configure 完成后点击generate
1.4 打开生成文件的位置arm_build
在CMakeCache.txt中找到
CMAKE_EXE_LINKER_FLAGS:STRING=
加上-pthread -ldl -lrt保存
1.5 回到cmake 重新reload cache 然后configure&generate
2.1 进入arm_build/ 执行sudo make [-j2]
-j4会编译得更快,如果你有八核,就开-j8
2.2 完成后执行sudo make install
2.3 把安装路径中的lib/pkgconfig
下的opencv4.pc
移动到/usr/lib/pkgconfig
2.3.1 用pkg-config --libs --cflags opencv4
验证是否成功
成功则能够输出相关链接信息
-I/home/zxdd/Desktop/OpenCV/sources/arm_install/include/opencv4/opencv
-I/home/zxdd/Desktop/OpenCV/sources/arm_install/include/opencv4
-L/home/zxdd/Desktop/OpenCV/sources/arm_install/lib -lopencv_dnn -lopencv_gapi
-lopencv_highgui -lopencv_ml -lopencv_objdetect -lopencv_photo
-lopencv_stitching -lopencv_video -lopencv_calib3d -lopencv_features2d -lopencv_flann
-lopencv_videoio -lopencv_imgcodecs -lopencv_imgproc -lopencv_core
2.4 配置库路径
sudo gedit /etc/ld.so.conf
添加安装文件的lib路径
sudo ldconfig
更新配置关于ldconfig请移步linux ldconfig命令,环境变量文件配置详解
2.5 把安装文件夹下的lib中的.so文件放到开发板的/usr/lib/路径下并更改权限
此处验证的demo如下,把一张图片转换为灰度图像并保存为tout.png,成功后则会输出yyyyy…
#include
#include
#include
using namespace cv; //OpenCV标准库
int main(int argc, char* argv[])
{
Mat src = imread("/avter.png");
//判断一下,看是否读取到图片
if (src.empty())
{
std::printf("could not load image... \n");
return -1;
}
Mat out;
cvtColor(src, out, CV_BGR2GRAY);
imwrite("/tout.png", out);
std::printf("yyyyy... \n");
return 0;
}
3.1 交叉编译验证
arm-linux-gnueabi-g++ test.cpp -o demo `pkg-config --libs --cflags opencv4`
编译通过即可
3.2 开发板验证
把编译出的demo放到开发板上运行,
能够在/目录下生成文件则验证成功
关于路径请根据自身情况更改!![4]
解: 从交叉编译工具的lib中把相应的动态链接文件放到开发板上的/usr/lib中
解: 从交叉编译工具的lib中把相应的动态链接文件放到开发板上的/lib中
[1]【Ubuntu 环境配置】(1)Ubuntu安装opencv-4.1.0+opencv_contrib-4.1.0(c++,py2,py3 皆可运行)https://blog.csdn.net/u011897411/article/details/89743448
[2] Ubuntu18上交叉编译树莓派3B+ opencv4.10 (非常详细) 第一章-交叉编译
https://blog.csdn.net/tajon1226/article/details/100606316
[3] Ubuntu 14.04 LTS下使用arm-linux-gcc交叉编译OpenCV 2.4.9 https://blog.csdn.net/ajianyingxiaoqinghan/article/details/70194392
[4]Linux 里有/lib和/usr/lib各个目录含义
https://blog.csdn.net/sweetfather/article/details/79625482