DM 8148カメラ収集表示識別テスト1

7241 ワード

dm 3730に比べてa 8端の認識は、確かに速度が速いが、目的はやはりdm 8148のdsp端を使って、次はdspの認識を加速させて入れたい.dm 8148は自動車電子の車載プラットフォームとして、かなり優位である.スマートメーター全景駐車歩行者識別などをして、それを使うことができます.
 
メインプログラム:
 
/*
 *      
 *
 *    zoushiwen,GXUT,       ,qq406460538
 *           
 *
 *      
 *
 */
/*
 * 
 * 
 */
extern "C"
{
#include <stdio.h>
#include <string.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdint.h>
#include <stdlib.h>
#include <errno.h>
#include <getopt.h>
#include <sys/ioctl.h>
#include <sys/mman.h>
#include <sys/select.h>
#include <sys/time.h>
#include <linux/fb.h>
#include <linux/videodev.h>
 
}

#include "opencv/highgui.h"
#include "opencv/cv.h"
#include "opencv/cxcore.h"
#include "opencv/cvaux.h"


#include "video_cap.h"

#include "displayFb.h"

#include "objdetect.h"

int main( int argc, char** argv )
{
    //  IplImage  
    IplImage* pImg = NULL; 
    IplImage* pCannyImg = NULL;
    IplImage* pGRAYImg = NULL;
    IplImage* imageColor = NULL;
    int width = 640;
    int height = 480;
    VideoDevice * m_pVideoDev = new VideoDevice(width,height);
    CDisplayFB  * m_pDisplay = new  CDisplayFB;
    CObjdetect *  m_pObjdetect = new CObjdetect;
    
    
    /*****************************open capture*************************************/
    int rs;
    int index;
    unsigned char  *pp;
    unsigned char * p;
    unsigned int len;
    
   pp = (unsigned char *)malloc(width * height* 2 * sizeof(char));
   rs = m_pVideoDev->openCamera("/dev/video0");
   if (rs < 0) {
        printf("Error in opening camera device 
"); return rs; } /*****************************open capture end ********************************/ /* Open the Display driver. */ int ret; ret = m_pDisplay->initFB("/dev/fb0",width, height); if (ret < 0) { printf("Error in opening display device for channel 0
"); return ret; } /*open display end */ imageColor = cvCreateImage(cvSize(width, height), IPL_DEPTH_8U, 3); // initial the objdetect m_pObjdetect->Initdetect("haarcascade_frontalface_alt.xml"); for(;;) { index = m_pVideoDev->get_frame((void **)&p,&len); m_pVideoDev->YUVToRGB24_N((unsigned char *)p,(unsigned char *) imageColor->imageData, width, height); //m_pObjdetect->detect_and_draw(imageColor, 2.3, 1.5,2.0 ); m_pDisplay->copyImageToFB((unsigned char *) imageColor->imageData,width, height); rs = m_pVideoDev->unget_frame(); // usleep(300000); } end: rs = m_pVideoDev->stop_capturing(); rs = m_pVideoDev->uninit_device(); rs = m_pVideoDev->close_device(); cvReleaseImage( &imageColor ); free(pp); m_pDisplay->exitFB(); delete [] m_pVideoDev; delete [] m_pDisplay; delete [] m_pObjdetect; return -1; }

 
makefileは以下の通りです
#LIB = -L/usr/lib/mysql -lmysqlclient -L./ -lcfg
#INCLUDE = -I/usr/include/mysql 
#LIB = -L/home/omap/omap3530/dvsdk/dvsdk_3_00_02_44/linuxlibs/lib -ljpeg
#INCLUDE = -I/home/omap/omap3530/dvsdk/dvsdk_3_00_02_44/linuxlibs/include
#LIB = -L/home/omap/lib -ljpeg
#INCLUDE = -I/home/omap/work/opencv/build/include
#

ROOTDIR = .

KERNEL_DIR =/opt/DM8148/ezsdk/board-support/linux-2.6.37-psp04.04.00.01
#This is root directory where Source is available. Change this path
#to the one where source files are kept
INSTALL_DIR = ./

#this is the path to the executable where all the executables are kept
EXE_DIR = ./bin

#This is path to the Include files of Library
#LIB_INC = $(INSTALL_DIR)/User_Library

#This is the path the include folder of the kernel directory. The include
#folder should contain all the necessary header files
INCLUDE_DIR = $(KERNEL_DIR)/include -I$(KERNEL_DIR)/arch/arm/include/ -I$(KERNEL_DIR)/arch/arm/plat-omap/include/

#This is the prefix applied to the gcc when compiling applications and library
COMPILER_PREFIX = arm-none-linux-gnueabi
CROSS_COMPILE = $(COMPILER_PREFIX)-

#This is the toolchain base folder
#TOOLCHAIN_DIR = /opt/codesourcery/2009q1-203
TOOLCHAIN_DIR = /opt/DM8148/arm-2009q1

#add cflags
CPPFLAGS += -march=armv7-a -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp
CPPFLAGS += -I$(TOOLCHAIN_DIR)/$(COMPILER_PREFIX)/libc/usr/include -I$(KERNEL_DIR)

#Libc path
LDFLAGS="-isystem $(TOOLCHAIN_DIR)/$(COMPILER_PREFIX)/libc/lib"

#This is the path to the Directory containing Library
LIB_DIR = $(TOOLCHAIN_DIR)/$(COMPILER_PREFIX)/libc/lib


CFLAGS = -g -Os \
	-march=armv7-a \
	-fno-strict-aliasing \
	-fno-common \
	-ffixed-r8 \
	-msoft-float \
	-I$(INCLUDE_DIR) \
	-pipe \
	-mno-thumb-interwork \
	-Wall \
	-Wstrict-prototypes \
	-fno-stack-protector \
	 -D__EXPORTED_HEADERS__

#LDFLAGS = -L/opt/codesourcery/arm-none-linux-gnueabi/libc/lib
LDFLAGS = -L/opt/DM8148/arm-2009q1/arm-none-linux-gnueabi/libc/lib

LIBS := -lpthread

#
# Platform specific options
#
CFLAGS += -DCONFIG_TI81XX




#$(CROSS_COMPILE)gcc $(CFLAGS) $(LDFLAGS) $(LIBS) -o $@ $(addsuffix .c,${@F})



#CC =/opt/DM8148/arm-2009q1/bin/arm-none-linux-gnueabi-gcc


OPENCV2_2_INCLUDE_FILE=/opt/DM8148/opencv/opencv8148/include/
OPENCV2_2_LIB_FILE=/opt/DM8148/opencv/opencv8148/lib


INCLUDE=-I$(OPENCV2_2_INCLUDE_FILE)
LIB+=-L$(OPENCV2_2_LIB_FILE) -lopencv_core -lopencv_ml -lopencv_highgui -lopencv_objdetect -lopencv_imgproc


CPPFLAG=-Wall -O2 -g  -I$(OPENCV2_2_INCLUDE_FILE)

TARGET = exe
SRC = $(wildcard *.cpp *.o)
OBJ = $(patsubst %.cpp, %.o, $(SRC))



%.o : %.c, %.h
	$(CROSS_COMPILE)gcc -c $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) $(LIBS) $< -o $@
%.o : %.cpp
	$(CROSS_COMPILE)gcc -c $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) $(LIBS) $< -o $@
$(TARGET) : $(OBJ)
	$(CROSS_COMPILE)gcc $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) $(LIBS) $^ -o $@ $(INCLUDE) $(LIB)
.PHONY: clean
clean:
	$(RM) $(TARGET) $(OBJ)