Hello everyone, here is Shi Kankan's blog. This article introduces the process of porting opencv on the arm development board
Virtual machine: Ubuntu16.04 64 bit
Single board: jz2440
Compiler: arm-linux-gcc 4.4.3
opencvbanbopencv2.4.9
安装cmake-gui
输入命令$cmake-gui后,会出现下面的提示,尚未安装cmake-gui,即没有安装图形界面。
sudo apt-get install cmake-qt-gui。安装过程需要联网
sudo su
cmake-gui
配置
去掉WITH_CUDA
CMAKE_INSTALL_PREFIX变量改为/usr/local/arm-opencv/
勾上 BUILD_JPEG、BUILD_PNG
去掉WITH_TIFF
build_opencvxr和with_opencvxr去掉
去掉build_opencv_ocl和with_opencl
点两次config 点一次Generate
sudo vi /usr/local/arm-opencv/CMakeCache.txt
打开文件夹下的CmakeCache.txt进行修改
//Flags used by the linker.(大概在194行附近)
CMAKE_EXE_LINKER_FLAGS:STRING=-lpthread -lrt
make -j4
sudo su
make install
未拷贝库编译
arm-linux-g++ -o test test.cpp -I /opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi/include/ -L /opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi/lib -I/usr/local/arm-opencv/include/opencv -I/usr/local/arm-opencv/include/opencv2 -L/usr/local/arm-opencv/lib -lopencv_core -lopencv_highgui -lopencv_imgproc -lopencv_legacy -lopencv_ml -lpthread -Wno-psabi -lrt
成功 下面拷贝库
cd /usr/local/arm-opencv/lib
sudo cp *so* /opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi/lib
cd /usr/local/arm-opencv/include
sudo cp -r opencv opencv2 /opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi/include/
arm-linux-g++ -o test test.cpp -I/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi/include/opencv -I/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi/include/opencv2 -L /opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi/lib -lopencv_core -lopencv_highgui -lopencv_imgproc -lopencv_legacy -lopencv_ml -lpthread -Wno-psabi -lrt
执行会报错 :
OpenCV Error: Unspecified error (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 script) in cvWaitKey, file /mnt/hgfs/share/opencv-2.4.9/modules/highgui/src/window.cpp, line 562
terminate called after throwing an instance of 'cv::Exception'
what(): /mnt/hgfs/share/opencv-2.4.9/modules/highgui/src/window.cpp:562: 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 script in function cvWaitKey
Aborted
因为我们没有安装gtk,所以我们不能调用和显示有关的函数 :
一个简单的测试程序如下 :
#include<iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
int main()
{
// 读入一张图片(游戏原画)
Mat img=imread("pic.jpg");
// 创建一个名为 "游戏原画"窗口
//namedWindow("游戏原画");
// 在窗口中显示游戏原画
//imshow("游戏原画",img);
// 等待6000 ms后窗口自动关闭
//waitKey(6000);
}
我们可以通过framebuffer在lcd上显示一副图片来替代gtk