1.ubuntu环境 安装opencv4
2.编译opencv4 并移植到ARM64位开发板
一、ubuntu环境 安装opencv4
1.安装opencv所需依赖库
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
安装gstreamer依赖文件
sudo apt-get -y install libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libgstreamer1.0-dev
if No package ‘gtk+-3.0‘ found
sudo apt install -y libgtk-3-dev
2.下载opencv4源码
下载地址:https://opencv.org/releases/
3.安装CMake工具
sudo apt-get install cmake
sudo apt install cmake-qt-gui
sudo apt-get install libgtk2.0-dev
sudo apt-get install pkg-config
4.配置CMake交叉编译OpenCV
4.1 将源码解压,并在目录下新建build/install文件夹
4.2 终端下直接运行cmake-gui
4.3 在cmake-gui配置 配置源码位路径和build路径
4.4 点击configure
4.5 因为我们此时是为ubuntu本机配置opencv4环境 所以直接选 Unix Makefiles Use default native compilers就行
4.6 开启world模式 常规下编译opencv源码会生成很多库。如果在使用CMake生成VS解决方案时把BUILD_opencv_world选项勾上,则可以只生成一个库。
4.7 设置build type
4.8 设置install路径
4.9 开启pkgconfig选项,否则无法生成opencv4.pc文件
如果你发现你编译好的opencv有GTK冲突问题需要选择 -DWITH_GTK_2_X=ON
参考:https://www.freesion.com/article/7806192111/
4.10 再次点击 Configure 只能点击Generate
5. 进入刚才新建的build文件夹内 执行命令 make -j4 && make install 开始编译源码
6.系统配置
6.1 执行以下命令编辑文件(如果没有就创建):
sudo gedit /etc/ld.so.conf.d/opencv.conf
6.2 在打开的opencv.conf文件尾部增加以下内容:
(即 刚才设置的prefix路径 + /lib)
每个人的地址不一样不要直接复制粘贴
6.3 执行配置:
sudo ldconfig
6.4 执行以下命令编辑文件(如果没有就创建):
sudo gedit ~/.bashrc
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:刚才设置的prefix路径 + /lib/pkgconfig
export PKG_CONFIG_PATH
生效环境变量
source ~/.bashrc
6.5 至此配置完成,退出控制台,再重新打开一个,执行命令
pkg-config --modversion opencv4
注意是opencv4,可以看到opencv的版本号:
pkg-config --modversion opencv4
4.5.4
至此ubuntu环境下的opencv4就安装完成了
7. 使用QT程序验证
7.1 pro文件添加 opencv第三方库
unix:!macx: LIBS += -L$$PWD/../../linux/world/opencv-4.5.4/install/lib/ -lopencv_world
INCLUDEPATH += $$PWD/../../linux/world/opencv-4.5.4/install/include/opencv4 \
$$PWD/../../linux/world/opencv-4.5.4/install/include//opencv4/opencv2
DEPENDPATH += $$PWD/../../linux/world/opencv-4.5.4/install/include
7.2 main.cpp
#include
#include
#include
#include
#include
using namespace cv;
using namespace std;
int main(int argc, char *argv[])
{
Mat image = imread("/home/book/图片/报警弹窗.png");
namedWindow("window", WINDOW_NORMAL);
imshow("window",image);
waitKey(0);
return 0;
}
二、编译opencv4 并移植到ARM64位开发板
编译arm版本的opencv4 前5步几乎完全一样 但4.5 步骤不同请注意
4.5 cmake setup 选项 参考文献
请先确认已经配置好 自己的交叉编译链环境
PS:如果不想把交叉编译链设置为全家变量 可以选择 Specify options for cross-compling 去设置教程编译链 具体参考
选择 Specify toolchain file for cross-compling选择你交叉编译链对应的cmake文件
路径在 /platforms/linux
问题一:
../../lib/libopencv_imgcodecs.so:对‘png_init_filter_functions_neon’未定义的引用
../../lib/libopencv_imgcodecs.so:对‘png_riffle_palette_rgba’未定义的引用
../../lib/libopencv_imgcodecs.so:对‘png_do_expand_palette_neon_rgb’未定义的引用
../../lib/libopencv_imgcodecs.so:对‘png_do_expand_palette_neon_rgba’未定义的引用
collect2: 错误: ld 返回 1
修改opencv下的 /3rdparty/libpng/pngpriv.h
130行
# if (defined(ARM_NEON) || defined(__ARM_NEON)) &&
改为
# if defined(PNG_ARM_NEON) && (defined(__ARM_NEON__) || defined(__ARM_NEON)) && \
打包拷贝:将上一步得到的install文件夹打包成tar或者tar.gz再拷贝到开发板的任意目录下,若不打包则拷贝时会提示某些文件无法复制过去,这里选择开发板中的/opt作为它的解压目录,/opt也是一般默认的软件包的安装位置,便于后续的环境变量的配置及日后的维护和查找。
添加动态库加载路径:运行Vim /etc/ld.so.conf.d/opencv.conf,会提示该文件不存在将新建一个新的conf文件,在打开的conf第一行里写上自己第一步解压的opencv的lib地址,如
/home/jbyyy/opencv4/lib
vim中输入:wq指令保存并退出,随后运行sudo ldconfig激活生效。
3. 环境变量配置:先将解压的opencv文件中位于/lib/pkgconfig下的opencv.pc进行修改:
# Package Information for pkg-config
prefix=/home/jbyyy/opencv4/
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir_old=${prefix}/include/opencv
includedir_new=${prefix}/include
Name: OpenCV
Description: Open Source Computer Vision Library
Version: 4.5.4
Libs: -L${exec_prefix}/lib -lopencv_dnn -lopencv_highgui -lopencv_ml -lopencv_objdetect -lopencv_shape -lopencv_stitching -lopencv_superres -lopencv_videostab -lopencv_calib3d -lopencv_videoio -lopencv_imgcodecs -lopencv_features2d -lopencv_video -lopencv_photo -lopencv_imgproc -lopencv_flann -lopencv_core
Libs.private: -ldl -lm -lpthread -lrt
Cflags: -I${includedir_old} -I${includedir_new}
将prefix修改为自己开发板上对应的opencv文件夹的路径如
prefix=/home/jbyyy/opencv4/
修改完成后保存退出,运行Vim /etc/bash.bashrc 在最后一行添加如下:
PKG_CONFIG_PATH=/home/jbyyy/opencv4/lib/pkgconfig:$PKG_CONFIG_PATH
export PKG_CONFIG_PATH
注意将路径替换成自己对应的pkgconfig路径, vim中输入:wq指令保存并退出,随后运行source ~/.bashrc激活生效。
运行如下指令若出现如下路径输出则说明pkg配置成功。
pkg-config --modversion opencv4
4.5.4