OpenCV在Hi3519AV100平台的交叉编译

1 基本说明

OpenCV版本:opencv-3.4.0 
编译器:arm-himix200 
支持芯片:Hi3516DV300/Hi3516CV500/Hi3519AV100 

2 官网链接

OpenCV官网:https://opencv.org/ 
官方编译安装说明:https://docs.opencv.org/3.4.1/d7/d9f/tutorial_linux_install.html 
github地址:https://github.com/opencv/opencv/releases/tag/3.4.0 

3 交叉编译

说明:在交叉编译之前,应该能够将OpenCV在ubuntu上编译安装(OpenCV在ubuntu下的编译安装),主要是为了安装相关依赖,以及cmake,git等工具 。在OpenCV交叉编译前,需要正确安装cmake,海思编译器arm-himix200-linux等,这里只介绍OpenCV在海思平台的交叉编译。

解压源码

tar xvzf opencv-3.4.0.tar.gz

在OpenCV源码包同级目录,新建一个文件夹,存放编译生成的文件,这样不会弄脏源码包 

mkdir hisi_build 

进入 hisi_build 文件夹 

cd hisi_build/

新建文件arm-himix200.cmake,在里面添加如下内容(注意海思编译器路径要正确,下面内容改为自己的路径

SET(CMAKE_SYSTEM_NAME Linux) 
SET(CMAKE_CXX_COMPILER arm-himix200-linux-g++)
SET(CMAKE_C_COMPILER arm-himix200-linux-gcc)
SET(CMAKE_FIND_ROOT_PATH /opt/hisi-linux/x86-arm/arm-himix200-linux/bin)

生成makefile

cmake ../opencv-3.4.0 -DCMAKE_TOOLCHAIN_FILE=./arm-himix200.cmake -DCMAKE_INSTALL_PREFIX=./lib -DCMAKE_INSTALL_INCLUDEDIR=./include -DCMAKE_BUILD_TYPE=Release -DBUILD_JPEG=ON -DWITH_1394=OFF -DWITH_GTK=OFF

执行make,开始编译 

make

可能报错:opencv-3.4.0/3rdparty/libpng/pngstruct.h:30:18: fatal error: zlib.h: No such file or directory 

修改 opencv-3.4.0/3rdparty/libpng 下的 CMakeLists.txt
在 ocv_include_directories("${CMAKE_CURRENT_SOURCE_DIR}" ${ZLIB_INCLUDE_DIRS}) 前添加
set(ZLIB_INCLUDE_DIRS "/home/share/opencv/opencv-3.4.0/3rdparty/zlib/")
注意修改上面路径。清除cmake,然后重新cmake & make

可能还有其他类似以上报错,处理方式一样。

make无报错后,执行make install,安装OpenCV 

make install

命令执行成功,可以看到OpenCV交叉编译生成的库文件、头文件放在 /hisi_build/lib 下。

4 测试程序

编写简单测试代码(draw_image.cpp),实现图片上画矩形框,代码如下

#include 

using namespace cv; 

int main( int argc, char** argv )  
{  
	Mat image;  

	image = imread( "test.jpeg", 1 );  
	if( !image.data )  
	{  
		printf( "No image data \n" );  
		return -1;  
	}   

	cv::Point lu = cv::Point(180, 60); 
	cv::Point rd = cv::Point(400, 260);   

	cv::rectangle(image, lu, rd, cv::Scalar( 255, 20, 0 ), 1, CV_AA );                 	

	imwrite("test_draw.jpeg", image);        

	return 0;  
}

编译,注意下面头文件路径./include/和库文件路径./lib/为你交叉编译生成的路径

arm-himix200-linux-g++ -o draw_image draw_image.cpp -I ./include/ ./lib/libopencv_core.so ./lib/libopencv_imgcodecs.so ./lib/libopencv_imgproc.so

执行

将可执行文件、测试图片和OpenCV库文件nfs到单板,注意库文件一般放在/usr/lib下。执行成功可以看到生成 test_draw.jpeg图片,图片上画了矩形框。

 

你可能感兴趣的:(海思,OpenCV,Hi3519A)