开发环境
- 本地主机:X86架构Ubuntu 18.04系统的虚拟机
- 开发主机:ARM64架构Debian10系统的开发板 RK3399PRO_X
- CLion2019 3.3
- OpenCV 3.4
第一步:在本地主机安装OpenCV
因为开发板为ARM64架构,OpenCV安装应选择aarch64的toolchain。详细安装方法参照此文章:
第二步:在CLion中编写CMakeList.txt
重点为find_package(OpenCV REQUIRED),另外
不要在CMakeList中指定编译器!!!
不要在CMakeList中指定编译器!!!
不要在CMakeList中指定编译器!!!
#这样是不行的!!!CLion无法在这里指定编译器!!!
set(CMAKE_C_COMPILER "/usr/bin/aarch64-linux-gnu-gcc")
set(CMAKE_CXX_COMPILER "/usr/bin/aarch64-linux-gnu-g++")
详细写法,参考此文章:
第三步:修改CLion Toolchains
在CLion中,File –> Settings –> Build, Execution, Deployment –> Toolchains
点击 + 号, 新建一个配置,此项目命名为ARM-LINUX,修改C Compiler与 C++ Compiler为第一步中安装的aarch64编译器路径,点击apply。并且选择此项目,点击 ↑ 箭头,将此配置设置为默认。
第四步:Build Project
这里以一个OpenCV项目为例:
#include <opencv2/opencv.hpp>
#include <opencv2/videoio.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(){
Mat frame;
VideoCapture capture(0);
namedWindow("CameraCapture", CV_WINDOW_AUTOSIZE);
Mat image = imread("1.png");
//read image test
if (image.data != NULL){
imshow("sample", image);
waitKey(0);
}
else{
cout << "Failed to load file!" << endl;
return -1;
}
//read camera test
if (!capture.isOpened()){
cout << "No video stream detected" << endl;
return -1;
}
while (true){
capture >> frame;
if(frame.empty()){
break;
}
imshow("camera", frame);
waitKey(30);
}
capture.release();
return 0;
}
点击Build –> Build Project
不出意外的话程序就编译成功了。
心得:
- 编写CMakeList.txt的时候,通过message(WARNING “XXXXX”)来进行简单的debug,确认问题位置
- 编写CMakeList.txt的时候,不要在这里声明compiler(官方文档也有说不推荐,现在终于知道为啥不推荐了)。
- CLion设置Toolchain的时候,一定要点击 ↑ 箭头将aarch64编译器设置为默认,否则还是使用X86编译器,最后build会出现error adding symbols: file in wrong format错误
文章评论