现在的位置: 首页 > 综合 > 正文

OpenCV-2.0.0移植到海思hi3520(ARM11)

2018年05月27日 ⁄ 综合 ⁄ 共 1361字 ⁄ 字号 评论关闭

原帖地址:http://www.opencv.org.cn/forum/viewtopic.php?t=13741

1.下载OpenCV-2.0.0.tar.bz2并解压;
2.cd OpenCV-2.0.0;
3../configure --host=arm-hismall-linux --without-gtk --without-carbon --without-quicktime --without-1394libs --without-ffmpeg --without-python --without-swig --enable-static --disable-shared --disable-apps CXX=arm-hismall-linux-g++ CC=arm-hismall-linux-gcc
CPPFLAGS=-I/opt/hisi-linux/x86-arm/gcc-3.4.3-uClibc-0.9.28/usr/include CFLAGS=-I/opt/hisi-linux/x86-arm/gcc-3.4.3-uClibc-0.9.28/usr/include
CPPFLAGS和CFLAGS需要根据自己的编译器安装目录修改;
4.下面是make,make完成后还要编译sample/c下的测试程序,但这个过程会遇到很多问题,可能与编译器版本有关,先做如下修改
(1):include/opencv/cxoperations.hpp:68的“#if __GNUC__ >= 4”改为“#if __GNUC__ >= 3”
(2):include/opencv/cxtypes.h:240的“return (int)lrint(value);”改为“return (int)(value + 0.5);”
此时可以顺利make,然后
(3)下载zlib-1.2.3.tar.gz,CC=arm-hismall-linux-gcc ./configure,make,然后把libz.a copy到opencv的src/.libs/
5.此时sample/c下的大部分程序都可以编译了,但在3520上运行时还缺少一些动态库,去编译器目录和sdk中找到libstdc++.so.6.0.3和libgcc_s.so.1并放到3520文件系统的/lib下,并做软链接把libstdc++.so.6链接到libstdc++.so.6.0.3;
6.以contours为例,在Opencv下用arm-hismall-linux-g++ samples/c/contours.c -o samples/c/contours -I/home/chl/temp/OpenCV-2.0.0/include/opencv -L/home/chl/temp/OpenCV-2.0.0/src/.libs -lcv -lhighgui -lcxcore -lz可以编译出contours可执行程序,但并不能运行,原因是3520上不能运行highgui库函数,去掉highgui库函数调用,把contours.c修改如附件即可;

另,一般监控中的视频采集都是YUV的,而opencv是不能直接支持yuv采集或转换的,那么怎么让opencv处理yuv呢,见附件contours.yuv.c;

good luck!!

抱歉!评论已关闭.