opencv arm交叉编译与仿真验证详细流程
【关键内容】
1.将opencv编译为能在arm上运行的库,直接获取编译后的成果物见:
armv7:https://download.csdn.net/download/u012824853/87867650
armv8:https://download.csdn.net/download/u012824853/87867658
2.在没有板子的情况下,仿真验证opencv库
1.将opencv编译为能在arm上运行的库
1.在下方链接中选择某个版本
Releases - OpenCVhttps://opencv.org/releases/点击“Sources”即可开始下载,得到opencv-3.4.1.zip:
2.解压,得到opencv-3.4.1到/home/ubuntu/opencv/opencv-3.4.1/
unzip opencv-3.4.1.zip
3.打开cmake-gui:
cd opencv-3.4.1
mkdir build
cd build
cmake-gui&
4.
where is the source code:刚下载解压后的opencv-3.4.1的路径
where to build the binaries:刚下载解压后的opencv-3.4.1的路径中的build
然后点击Configure
5.Operation System必须为Linux,Processor必须为arm
Compilers的C为自己PC/服务器中的C交叉编译工具链所在位置
Compilers的C++为自己PC/服务器中的C++交叉编译工具链所在位置
Target Root为自己PC/服务器公用头文件所在位置
Include Mode为Search only in Target Root
点击Finish
6.等到Configuring done
勾选BUILD_JPEG和BUILD_PNG
另外CMAKE_INSTALL_PREFIX也重新选择一下:
7.再次点击Configure,等待Configuring done,点击Generate,等待Generating done,可以关闭cmake-gui了
8.在/home/ubuntu/opencv/opencv-3.4.1/build中运行make -j32,等待100%,然后执行sudo make install,无报错即完成opencv arm交叉编译,所有的编程成果物都在刚才设置好的CMAKE_INSTALL_PREFIX中
2.仿真验证
1.在没有arm板的情况下,在PC/服务器上做仿真验证:
sudo apt-get install qemu
编写main.cpp
#include "opencv2/core.hpp"
#include "opencv2/imgproc.hpp"
#include "opencv2/highgui.hpp"
#include "opencv2/videoio.hpp"
#include <iostream>
#include <stdio.h>
using namespace cv;
using namespace std;
int main()
{
Mat image;
image = imread("test.jpg");
return 0;
}
2.编写Makefile
SRCS += $(wildcard main.cpp)
OBJS = $(SRCS:.cpp = .o)
CXX = arm-linux-gnueabihf-g++
TARGET = exam
INCLUDES = -I/home/ubuntu/output/include/
LIBS = -L.
LIBS += -L/home/ubuntu/output/lib/
CCFLAGS = -Wall -O0
all : $(TARGET)
$(TARGET):$(OBJS)
$(CXX) $^ -o $@ $(INCLUDES) $(LIBS) -lopencv_stitching -lopencv_videostab -lopencv_objdetect -lopencv_photo -lopencv_dnn -lopencv_calib3d -lopencv_features2d -lopencv_flann -lopencv_highgui -lopencv_ml -lopencv_superres -lopencv_videoio -lopencv_imgcodecs -lopencv_shape -lopencv_video -lopencv_imgproc -lopencv_core -ldl -lm -lpthread -lrt
%.o:%.cpp
$(CXX) -c $< $(CCFLAGS)
clean:
rm $(TARGET)
3.编译
make
4.将/home/ubuntu/output/lib/所有文件复制到/usr/lib/下,然后执行
qemu-arm -L /usr/arm-linux-gnueabihf/ ./exam
执行无报错 即完成