资源简介

dm642上使用meanshift算法实现目标跟踪

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

#include “stdio.h“
#include “rectangle.h“
#include “NewStruct.h“

//////////////////////////////////////////////////跟踪参数//////////////////////////////////////
#define winwidth 40//窗口宽度
#define winheight 40//窗口高度
#define epsiternum 50//迭代次数
#define epsdist 10//步长阈值
///////////////////////////////////////////////////////////////////////////////////////////////////

extern int EXTERNALHEAP;


dsp_point dpoint(short x short y)
{
  dsp_point temp;
  temp.x = x;
  temp.y = y;
  return temp;
}

VPORT_PortParams EVMDM642_vDisParamsPort 
  = EVMDM642_DIS_PARAMS_PORT_DEFAULT;


static VPORTDIS_Params EVMDM642_vDisParamsChan 
   = EVMDM642_DIS_PARAMS_CHAN_BT656_DEFAULT(PAL);

static SAA7105_ConfParams EVMDM642_vDisParamsSAA7105 
   = EVMDM642_DIS_PARAMS_SAA7105_SDTV_DEFAULT(PAL720 SVIDEO);

static VPORTCAP_Params EVMDM642_vCapParamsChan 
   = EVMDM642_CAP_PARAMS_CHAN_embedDED_DEFAULT(PAL720);

FVID_Handle  disChan;

void VideoLoopbackInit()
{
    Int status;
    EVMDM642_vDisParamsChan.segId = EXTERNALHEAP;
    EVMDM642_vDisParamsSAA7105.hI2C = DM642_I2C_hI2C;
    /******************************************************/
    /* initialization of display driver                   */
    /******************************************************/
    disChan = FVID_create(“/VP1DISPLAY“ IOM_OUTPUT
        &status (Ptr)&EVMDM642_vDisParamsChan NULL);

    FVID_control(disChan VPORT_CMD_EDC_base + EDC_CONFIG 
        (Ptr)&EVMDM642_vDisParamsSAA7105);
        
}

void VideoLoopbackStart()
{
    FVID_control(disChan VPORT_CMD_START NULL);  
}

void tskVideoLoopback()
{
    
    Int i;
SCOM_Handle fromInput1toDISfromDIStoInput1;
////////////////////////////////////函数声明&变量定义////////////////////////////////////////
Int newobjectmode;//新目标标志位
Int initrackmode;//初始跟踪标志位
Int iternum;//迭代次数
Int trackmode;//跟踪标志
dsp_point firstpoint;//目标中心点
dsp_point nextpoint;//跟踪下一点
dsp_point calcpoint;//计算目标中心点
double objecthist[256];//目标区域权重直方图
double nexthist[256];//候选目标区域权重直方图

void drawRect(Uint8* Imageshort image_width short image_height dsp_point point short objectW short objectH);//画矩形框
void calc_colorhist(Uint8* imageYdsp_point ppointdouble* qu);//计算权重直方图
dsp_point calc_location(Uint8* imageYdsp_point spointdouble* qdouble* p);//定位计算

/////////////////////////////////////////////////////////////////////////////////////////////////
    FVID_frame *disframeBuf;
    FVID_frame *capframeBuf;  
    Int numLinesDis = EVMDM642_vDisParamsChan.imgVSizeFld1;
    
    Int numLinesCap = EVMDM642_vCapParamsChan.fldYStop1 -
                      EVMDM642_vCapParamsChan.fldYStrt1+1;


    Int numLines = (numLinesDis > numLinesCap) ? numLi

评论

共有 条评论