【关键内容】
1.将opencv编译为能在arm上运行的库
2.在没有板子的情况下,仿真验证opencv库
1.将opencv编译为能在arm上运行的库
1.在下方链接中选择某个版本
Releases - OpenCV
https://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
执行无报错 即完成















![给定两个数组x和hp,长度都是N。 x数组一定是有序的,x[i]表示i号怪兽在x轴上的位置 hp数组不要求有序,hp[i]表示i号怪兽的血量](https://img-blog.csdnimg.cn/88500ee2229e45f39e5f371d474bfb33.png)


