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则不会出现此问题。
1、下载源码(zip压缩包)后,鼠标右键,解压这两个压缩包。新建个build文件夹(最终得到的是build/install里的所有内容)
Releases · opencv/opencv
Tags · opencv/opencv_contrib
都在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++
勾选nonfree并指定modules路径
勾选world,否则生成很多的so,不方便配置。勾选所有GTK。只勾选BUILD_ZLIB
勾选BUILD_ZLIB、BUILD_JPEG、BUILD_PNG