歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

luvcview在arm板上的移植

luvcview在arm板上的移植   一直想著在自己的開發板上能回顯攝像頭中的內容,今天終於有點時間了,試著在網上找了一下,發現支持V4L的攝像頭應用程序還真不少。我簡單看了一下,luvcview是支持直接回顯的。所以就嘗試著移植了luvcview。  www.2cto.com   開發環境: 主     機 VM & Ubuntu 10.04                 開 發 板 devkit8500 (arm-cortex a8 dm3730)                 交叉編譯器 arm-2009q1   1. 首先就是要下載luvcview源代碼,這個不用多說,到處都是。我這裡使用的是 luvcview_20070512.orig.tar.gz,這個包需要SDL庫的支持,在網上找找怎麼移植就是了。 2. 將壓縮包解壓到自己的工作目錄並進入源碼目錄:  www.2cto.com       #tar xvf /mnt/hgfs/share/luvcview_20070512.orig.tar.gz 3. 修改Makefile文件,這裡有關鍵的幾行是必須要修改的。         CC=gcc         CPP=g++         INSTALL=install         APP_BINARY=luvcview         BIN=/usr/local/bin         SDLLIBS = $(shell sdl-config --libs)          SDLFLAGS = $(shell sdl-config --cflags)         #LIBX11FLAGS= -I/usr/X11R6/include -L/usr/X11R6/lib ----->>>        TARGET=arm-none-linux-gnueabi-        CC=$(TARGET)gcc        CPP=$(TARGET)g++        INSTALL=install        APP_BINARY=luvcview        BIN=/usr/local/bin        SDLLIBS = -L/work/prj/root-dev/usr/local/lib -lSDL        SDLFLAGS = /work/prj/root-dev/usr/local/include 其中SDLLIBS和SDLFLAGS標識了SDL庫的頭文件和庫文件所在的目錄,我的放在/work/prj/root-dev/usr/local/下,這裡順便說一下,建議在家在移植一些庫時,盡量將這些庫安裝在一個固定的目錄下面,方便後面移植其它庫時使用,例如我將前面移植的一些基礎庫全部安裝到/work/prj/root-dev/目錄下,後面再用時,就不用東找西找了。 3. 源代碼修改 luvcview.c        (1). #include <X11/Xlib.h>  --->>> //#include <X11/Xlib.h>        (2). static Uint32 SDL_VIDEO_Flags =SDL_ANYFORMAT | SDL_DOUBLEBUF | SDL_RESIZABLE; --->>> static Uint32 SDL_VIDEO_Flags = SDL_ANYFORMAT | SDL_RESIZABLE;// | SDL_DOUBLEBUF;        (3). int format = V4L2_PIX_FMT_MJPEG; --->>> int format = V4L2_PIX_FMT_YUYV;   4. 直接make編譯就可以了,然後將luvcview拷到開發板上,插上USB攝像頭,運行luvcview就可以在LCD上看到圖像了。   **** (1) 注釋掉SDL_DOUBLEBUF是因為在luvcview的代碼裡面沒有調用SDL_Flip,所以用雙buffer無法顯示。如果不想注釋掉SDL_DOUBLEBUF,那就需要在主循環裡面增加一句     /* main big loop */     while (videoIn->signalquit) {         ……                  SDL_Flip(pscreen);           SDL_Delay(10);     } (2) V4L2_PIX_FMT_MJPEG改成V4L2_PIX_FMT_YUYV是因為通過V4L接口取出來的圖像數據都是YUV格式的,除非你的攝像頭支持mjpeg格式。當然也可以不修改源碼,而在運行luvcview時增加一個參數運行,如:./luvcview -f yuv  
Copyright © Linux教程網 All Rights Reserved