在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > OpenCV ffmpeg移植到ARM平臺(tái)

            OpenCV ffmpeg移植到ARM平臺(tái)

            作者: 時(shí)間:2016-11-09 來源:網(wǎng)絡(luò) 收藏
            前一篇寫了如何在移植OpenCV庫到ARM平臺(tái)上,本來我只是用到OpenCV的打開USB攝像頭獲取圖像到IplImage結(jié)構(gòu)中,這用到了V4L2的底層函數(shù)。然后進(jìn)行視頻圖像的幀處理。

            那么如何用OpenCV讀寫ARM板上的視頻文件,并進(jìn)行視頻處理呢?這該又將如何移植呢?

            本文引用地址:http://www.biyoush.com/article/201611/317669.htm

            這個(gè)就必須要裝x264,xvid和ffmpeg,和上一篇中講的通過V4L2底層函數(shù)獲取攝像頭視頻就有點(diǎn)不一樣了。

            下面就介紹一種方法。

            測(cè)試環(huán)境:Ubuntu 12.04 LTS

            OpenCV版本:1.0

            交叉編譯器:arm-none-linux-gnueabi-4.3.2

            步驟如下:

            一 交叉編譯libjpeg
            為了使OpenCV能處理jpeg圖像,我們必須事先交叉編譯好libjpeg
            這里使用的版本是jpegsrc.v6b
            1 下載libjpeg源碼:ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v6b.tar.gz
            2 解壓進(jìn)入目錄
            3 配置
            #./configure --prefix=/root/libjpeg-arm --exec-prefix=/root/libjpeg-arm --enable-shared
            --enable-static
            下面分別介紹這幾個(gè)參數(shù)的作用:
            --prefix=/root/libjpeg-arm : 執(zhí)行make install 后,會(huì)將與體系無關(guān)的文件拷貝到此目錄下,具
            體如下:
            /root/libjpeg-arm.....................................
            |
            +---include........................................
            |
            ---jconfig.h
            |
            ---jerror.h
            |
            ---jmorecfg.h
            |
            ---jpeglib.h
            +---man............................................
            |
            +---man1.......................................
            |
            ---cjeg.1
            |
            ---djpeg.1
            |
            ---jpegtran.1
            |
            ---rdjpgcom.1
            |
            ---wrjpgcom.1
            --exec-prefix=/root/libjpeg-arm : 執(zhí)行make install 后,會(huì)將與體系無關(guān)的文件拷貝到此目錄
            下,即將一些可執(zhí)行程序、動(dòng)態(tài)鏈接庫和靜態(tài)鏈接庫拷貝到此目錄的相應(yīng)目錄下,具體如下:

            /root/libjpeg-arm........................................
            |
            +---bin............................................
            |
            ---cjeg
            |
            ---djpeg
            |
            ---jpegtran
            |
            ---rdjpgcom
            |
            ---wrjpgcom
            +---lib...........................................
            |
            ---libjpeg.la
            |
            ---libjpeg.so
            |
            ---libjpeg.so.62
            |
            ---libjpeg.so.62.0.0
            --enable-shared : 用GNU libtool編譯成動(dòng)態(tài)鏈接庫 。
            4 修改生成的Makefile文件:
            # The name of your C compiler:
            CC= gcc 該成 CC= /root/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi-gcc
            (根據(jù)你自己交叉編譯器的位置修改)
            # library (.a) file creation command
            AR= ar rc 該成 AR= /root/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi-ar rc
            (同上)
            # second step in .a creation (use "touch" if not needed)
            AR2= ranlib 該成 AR2= /root/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabiranlib
            (同上)
            5 在/root/libjpeg-arm目錄下建立 man/man1,include,lib,bin四個(gè)目錄
            6 # make
            # make install
            7 將/root/libjpeg-arm/include/中(jconfig.h, jerror.h, jmorecfg.h, jpeglib.h)四個(gè)頭文件拷
            貝到:/root/arm-none-linux-gnueabi/arm-none-linux-gnueabi/include中。
            將/root/libjpeg-arm/lib中(libjpeg.la, libjpeg.so, libjpeg.so.62, libjpeg.so.62.0.0)四個(gè)庫
            文件拷貝到:/root/arm-none-linux-gnueabi/arm-none-linux-gnueabi/lib中
            注意:執(zhí)行以下命令檢查生成的libjpeg.so是否為ARM版:

            # file libjpeg.so
            以下為正確輸出,否則檢查交叉編譯器路徑以及Makefile并重新編譯。
            注意:執(zhí)行完以上操作后執(zhí)行以下命令檢查庫文件是否已正確安裝:
            # arm-linux-gcc -print-file-name=libjpeg.so
            如果輸出為"libjpeg.so"則說明沒有正確安裝,重復(fù)7步驟。
            如果輸出為"DIR/libjpeg.so"則說明安裝正確。
            至此libjpeg交叉編譯完成。
            二 交叉編譯 x264,xvid,ffmpeg
            為了使OpenCV能處理視頻,我們要事先交叉編譯ffmpeg,而ffmpeg又是依賴x264和
            xvid的。
            1 下載yasm:
            到 http://www.tortall.net/projects/yasm/wiki/Download 下載yasm0.7.2(x264需要用
            到的匯編編譯器)
            # ./configure --enable-shared --prefix=/root/arm-none-linux-gnueabi/arm-none-linuxgnueabi/
            --host=arm-linux
            # make
            # make install
            2 交叉編譯x264
            到 ftp://ftp.videolan.org/pub/videolan/x264/snapshots/ 下載x264-snapshot-20060805-
            2245.tar.bz2,解壓進(jìn)入目錄
            (1).配置
            # ./configure --prefix=/root/arm-none-linux-gnueabi/arm-none-linux-gnueabi/ --enableshared
            (2).修改配置參數(shù)
            修改config.mak:
            prefix=/root/arm-none-linux-gnueabi/arm-none-linux-gnueabi/
            exec_prefix=${prefix}
            bindir=${exec_prefix}/bin
            libdir=${exec_prefix}/lib
            includedir=${prefix}/include
            # 這里改為ARM
            ARCH=ARM
            SYS=LINUX
            # 這里改為arm-linux-gcc
            CC=arm-linux-gcc
            # 這里去掉-DHAVE_MMXEXT -DHAVE_SSE2 -DARCH_X86
            CFLAGS=-Wall -I. -O4 -ffast-math -D__X264__ -DHAVE_MALLOC_H -DSYS_LINUX
            -DHAVE_PTHREAD -s -fomit-frame-pointer
            LDFLAGS= -lm -lpthread -s
            AS=nasm

            ASFLAGS=-O2 -f elf
            VFW=no
            GTK=no
            EXE=
            VIS=no
            HAVE_GETOPT_LONG=1
            DEVNULL=/dev/null
            CONFIGURE_ARGS= --enable-shared --prefix=/root/arm-none-linux-gnueabi/armnone-
            linux-gnueabi/
            SONAME=libx264.so.49
            default: $(SONAME)
            修改Makefile,將66~68行的ar和ranlib改為arm下的:
            libx264.a: .depend $(OBJS) $(OBJASM)
            arm-linux-ar rc libx264.a $(OBJS) $(OBJASM)
            arm-linux-ranlib libx264.a
            (3).編譯安裝
            # make
            # make install
            這里可以在交叉編譯鏈目錄/root/arm-none-linux-gnueabi/arm-none-linux-gnueabi/的
            lib下生成libx264.so
            3 交叉編譯xvid
            到 http://downloads.xvid.org/downloads/xvidcore-1.1.3.tar.gz 下載xvid
            下載xvid解壓并進(jìn)入build/generic
            配置
            # ./configure --prefix=/root/arm-none-linux-gnueabi/arm-none-linux-gnueabi/ --disableassembly
            [解釋]--disable-assembly :因?yàn)閤vid沒有針對(duì)ARM的匯編優(yōu)化,所以編譯時(shí)必須關(guān)掉匯

            修改Makefile引用的platform.inc文件,將CC=gcc改為CC=arm-linux-gcc
            # make
            # make install
            成功后進(jìn)入example文件夾
            測(cè)試,輸入
            arm-linux-gcc -o xvid_encraw xvid_encraw.c -lc -lm -I../src/ -L../build/generic/=build

            -lxvidcore
            即可生成xvid_encraw
            這里可以在交叉編譯鏈目錄/root/arm-none-linux-gnueabi/arm-none-linux-gnueabi/的
            include,lib下生成相應(yīng)的頭文件和庫文件
            4 交叉編譯ffmpeg
            到http://download.chinaunix.net/download.php?id=5532&ResourceID=2990在這個(gè)網(wǎng)址
            上下載ffmpeg-0.4.9-p20051120.tar.bz2,然后解壓。
            修改configure文件,要修改的如下
            由于cc、ar、ranlib、strip都是交叉編譯環(huán)境中的執(zhí)行文件,可以這樣配置
            prefix="/root/arm-none-linux-gnueabi/arm-none-linux-gnueabi/"
            cross_prefix="root/arm-none-linux-gnueabi/bin/arm-linux-"
            cpu="arm"
            配置
            # ./configure --cpu=arm --cc=arm-linux-gcc --enable-shared --disable-ffserver --enablexvid
            --enable-x264 --enable-gpl --enable-pthreads --disable-strip
            # make
            # make install
            這里可以在交叉編譯鏈目錄/root/arm-none-linux-gnueabi/arm-none-linux-gnueabi/的
            include,lib下生成相應(yīng)的頭文件和庫文件
            至此,OpenCV所依賴的庫都交叉編譯完成,并在交叉編譯鏈中的include,bin,share,lib下
            有相應(yīng)的文件
            三 交叉編譯OpenCV
            下載OpenCV-1.0.0源碼 http://www.opencv.org.cn/download/opencv-1.0.0.tar.gz
            解壓進(jìn)入目錄配置
            # ./configure --host=arm-none-linux-gnueabi --without-gtk --without-carbon --withoutquicktime
            --without-1394libs --with-ffmpeg --without-python --without-swig --enable-static
            --enable-shared --disable-apps CXX=arm-none-linux-gnueabi-g++ CPPFLAGS=-
            I/root/arm-none-linux-gnueabi/arm-none-linux-gnueabi/include LDFLAGS=-L/root/arm-

            none-linux-gnueabi/arm-none-linux-gnueabi/lib --with-v4l --prefix=/root/opencv-arm
            --libdir=/root/opencv-arm/lib --includedir=/root/opencv-arm/include
            說明:
            --host=arm-none-linux-gnueabi :指出交叉編譯arm平臺(tái)
            --without-gtk:忽略gtk+2.0 windows
            --without-carbon: 不使用Mac OS上的X庫
            --without-quicktime
            --without-1394libs
            --without-ffmpeg
            --without-python
            --without-swig
            --enable-static :生成靜態(tài)庫
            --enable-shared :生成動(dòng)態(tài)庫
            CXX=arm-none-linux-gnueabi-g++ : 指定編譯工具
            CPPFLAGS=-I/root/arm-none-linux-gnueabi/arm-none-linux-gnueabi/include :
            OpenCV會(huì)用到一些dev的包,如png.h,jpeglib.h,大部分頭文件在/usr/include下
            --prefix=/root/opencv-arm :指定安裝目錄
            -libdir=/root/opencv-arm/lib: 指定庫文件安裝位置
            --includedir=/root/opencv-arm/include:指定包含文件安裝位置
            如果配置正確,會(huì)有下面信息
            General configuration ================================================
            Compiler: arm-none-linux-gnueabi-g++
            CXXFLAGS: -Wall -fno-rtti -pipe -O3 -fomit-frame-pointer
            Install path: /root/opencv-arm
            HighGUI configuration ================================================
            Windowing system --------------
            Use Carbon / Mac OS X: no
            Use gtk+ 2.x: no
            Use gthread: no
            Image I/O --------------------

            Use libjpeg: yes

            Use zlib: yes
            Use libpng: yes
            Use libtiff: no
            Use libjasper: no
            Use libIlmImf: no
            Video I/O ---------------------
            Use QuickTime / Mac OS X: no
            Use xine: no
            Use ffmpeg: yes
            Use dc1394 & raw1394: no
            Use v4l: yes
            Use v4l2: yes
            Wrappers for other languages =========================================
            SWIG
            Python no
            Additional build settings ============================================
            Build demo apps no
            Now run make ...
            ===================================================================
            ===
            # make
            # make install
            arm上運(yùn)行OpenCV所需庫:
            1 將/root/opencv-arm/lib下生成的庫文件
            libcvaux.so.1.0.0
            libcv.so.1.0.0
            libcxcore.so.1.0.0
            libhighgui.so.1.0.0
            libml.so.1.0.0
            拷出來全部重命名
            *.so.1
            2 加上之前的庫文件,將/root/arm-none-linux-gnueabi/arm-none-linux-gnueabi/lib下的
            libjpeg,xvid,x264,ffmpeg庫都拷出來放去板子的/usr/lib或者/lib下,也可以到板子上一
            個(gè)文件夾,然后#export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/YOUR/lib/DIR
            3 OpenCV所需庫總表:


            編譯源文件方法
            arm-none-linux-gnueabi-g++ demo.c -o demo -I/root/opencv-arm/include/opencv
            -L/root/opencv-arm/lib -lcv -lcxcore -lpthread -lrt -lcvaux -lm -lpng -ljpeg -lz -lml -lhighgui
            -ldl
            最后,將生成的二進(jìn)制文件拷到板子上就可運(yùn)行



            關(guān)鍵詞: OpenCVffmpegARM平

            評(píng)論


            技術(shù)專區(qū)

            關(guān)閉