DM 8148カメラ収集表示識別テスト1
7241 ワード
dm 3730に比べてa 8端の認識は、確かに速度が速いが、目的はやはりdm 8148のdsp端を使って、次はdspの認識を加速させて入れたい.dm 8148は自動車電子の車載プラットフォームとして、かなり優位である.スマートメーター全景駐車歩行者識別などをして、それを使うことができます.
メインプログラム:
makefileは以下の通りです
メインプログラム:
/*
*
*
* 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)