hisiv3531,OpenCV、ffmpeg与libx264交叉编译

1、x.264

在/home/fyp/sda3/x264文件夹下

 ./configure --prefix=/usr/local/arm-x264 --enable-shared --enable-static --host=arm-hisiv200-linux --disable-asm

修改config.mak

Sudo gedit config.mak

主要将:

CC=gcc             改为         CC=arm-hisiv200-linux-gcc  

LD=gcc -o           改为        LD=arm-hisiv200-linux-gcc -o

RANLIB=ranlib       改为        RANLIB=arm-hisiv200-linux-ranlib

STRIP=strip          改为        STRIP=arm-hisiv200-linux-strip

make

make install

2.ffmpeg建议流程

检测你的opencv是否已经包含ffmpeg。这个很简单,用ldd命令查看可执行程序用了哪些动态库就知道了。如果没有检测到与ffmpeg相关的库,那说明opencv没配置完全,下面是详细配置过程。

a. 到下面链接下载 ffmpeg-3.0.tar.gz

 http://ffmpeg.org/download.html

b. #tar-zxvf  ffmpeg-3.0.tar.gz

chmod -R 777 ffmpeg-3.0

mkdir ffmpeg_static

cd ffmpeg_3.0

设置configure

./configure --prefix=/home/fyp/sda3/ffmpeg-hisiv --enable-static --enable-cross-compile --arch=arm --target-os=linux --cc=arm-hisiv200-linux-gcc --ranlib=arm-hisiv200-linux-ranlib --enable-libx264--enable-gpl --enable-pthreads --disable-stripping --ar=arm-hisiv200-linux-ar --ld=arm-hisiv200-linux-gcc --strip=arm-hisiv200-strip --extra-cflags=-I/usr/local/arm-x264/include --extra-ldflags=-L/usr/local/arm-x264/lib

make

make install

再编译opencv,可是无法读取视频流,当时编译x264时有错误prefix前没有加--

而且,没有将交叉编译好的ffmpeg加入pkg-config 

用cmake-gui编译时下面查看:

=======================

 FFMPEG:                      NO

 codec:                      NO

 format:                    NO

 util:                          NO

 swscale:                   NO

 gentoo-style:              NO

这样读取视频不会成功

sudo gedit/etc/bash.bashrc

在打开的文档最后加入:

export LD_LIBRARY_PATH=/home/fyp/sda3/ffmpeg-hisiv/lib

export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/home/fyp/sda3/ffmpeg-hisiv/lib/pkgconfig

export PKG_CONFIG_LIBDIR=$PKG_CONFIG_LIBDIR:/home/fyp/sda3/ffmpeg-hisiv/lib

保存退出,重启电脑(用source/etc/bash.bashrc命令也可)使其生效,可用命令查看当前pkg-config:pkg-config --list-all

有刚安装好的一些东西

hisiv3531,OpenCV、ffmpeg与libx264交叉编译_第1张图片

3.交叉编译opencv

用cmake-gui生成的makefile,找不到ffmpeg,参考官方的文档的交叉编译步骤:

http://docs.opencv.org/doc/tutorials/introduction/crosscompilation/arm_crosscompile_with_cmake.html#arm-linux-cross-compile

它用cmake调用opencv-2.4.6.1下的CMakeLists.txt和opencv-2.4.9/platforms/linux/arm-gnueabi.toolchain.cmake来生成makefile,但是arm-gnueabi.toolchain.cmake要修改,打开它,把它所有东西删掉,写入以下几句:

set( CMAKE_SYSTEM_NAME Linux )

set( CMAKE_SYSTEM_PROCESSOR arm )

set( CMAKE_C_COMPILER arm-hisiv200-linux-gcc )

set( CMAKE_CXX_COMPILER arm-hisiv200-linux-g++ )

保存,退出,重命名为arm-hisiv200-linux.toolchain.cmake

 然后在opencv-2.4.9下建立一个build目录,cd进入该目录,执行一下命令:

cmake -DCMAKE_TOOLCHAIN_FILE=/home/fyp/sda3/opencv-2.4.9/platforms/linux/arm-hisiv200-linux.toolchain.cmake

等待一会,会发现控制台里输出了很多信息,有什么头文件找不到,但都无关要紧,只需查看一下信息:

--   VideoI/O:

--    DC1394 1.x:               NO

--    DC1394 2.x:               NO

--    FFMPEG:                  YES

--    codec:                    YES (ver55.18.102)

--    format:                   YES (ver55.12.100)

--    util:                       YES(ver 52.38.100)

--    swscale:                   YES(ver 2.3.100)

--    gentoo-style:              YES

hisiv3531,OpenCV、ffmpeg与libx264交叉编译_第2张图片

如果出现了,那么成功就在眼前。用cmake-gui打开CMakeCache.txt,把一些无关要紧的都去掉,不然会出错,

Make

Make install

 

你可能感兴趣的:(opencv,linux,hisiv3531)