编译OpenCV——jetson嵌入式平台
其他平台参考:编译OpenCV——Windows平台,适应VS版本 - 夕西行 - 博客园
jetson嵌入式平台的系统为:ubuntu20.04 aarch64
不再研究Ubuntu x64上交叉编译ubuntu aarch64的OpenCV库,因为无法识别到arm的GTK导致编译不进去,最终imshow时会报如下错误:
modules/highgui/src/window.cpp:611:error: (-2) The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure
直接在jetson平台上编译OpenCV则不会出现此问题。
但是x64上也编译下arm64版本的opencv和x64版本的opencv,这样不用在x64和jetson之间考来考去了。参考编译opencv后的跨平台使用问题 - 夕西行 - 博客园
1、下载源码(zip压缩包)后,鼠标右键,解压这两个压缩包。新建个build文件夹(最终得到的是build/install里的所有内容)
都在src文件夹里
2、安装编译工具
#安装cmake和arm64版gcc、g++ sudo apt install -y cmake cmake-gui sudo apt install -y gcc-aarch64-linux-gnu sudo apt install -y g++-aarch64-linux-gnu
3、安装一些依赖
sudo apt-get install -y build-essential sudo apt-get install -y libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev libcanberra-gtk-module sudo apt-get install -y libtbb-dev libjpeg-dev libpng-dev
GTK是一个开源的跨平台GUI工具包,使用imshow等函数会用到。也可以用qt作界面,但需要安装qt,此处不再赘述。
4、CMake界面设置
打开CMake界面,选择目录后,点击Configure。注意选择aarch64的gcc、g++
注意下图目录,最终的文件(include、bin、lib等)会自动拷贝到此路径的对应目录中。
勾选nonfree并指定modules路径
勾选world,否则生成很多的so,不方便配置
勾选BUILD_ZLIB、BUILD_JPEG、WITH_JPEG、BUILD_PNG、WITH_PNG
不勾选所有的python、test,我使用的C++部署,不用python。如果您需要,请勾选。
之后,多次点击Configure,直到没有红色。
观察下CMake界面打印的文字内容:
之后,点击Generate
5、打开build文件夹,在该文件夹里鼠标右键,打开终端
make -j8
等编译结束后,如下操作会自动拷贝目标文件到之前图中默认的 /usr/local/ 里
make install
6、在Ubuntu x64电脑上,建个项目,生成的可执行程序拷贝到 jetson平台上运行即可
代码参考 编译OpenCV——ubuntu x86_64平台 - 夕西行 - 博客园
【参考】
aarch64-opencv341交叉编译,并在arm上部署helloopencv_aarch64 交叉编译器-CSDN博客