3516a HI_MPI_IVE_GMM 跑不通

HI_VOID GMMSampleSingle()
{
#if 1
	IVE_SRC_IMAGE_S stIveImg;
	IVE_DST_IMAGE_S stIveFg;
	IVE_DST_IMAGE_S stIveBg;


	HI_BOOL bInstant = HI_TRUE;   // must be true

	
	IVE_HANDLE hIveHandle;        // handle
	IVE_MEM_INFO_S *pstDst;       //gmm model
        IVE_GMM_CTRL_S stGMMCtrl;     //stGmmCtrl
	IplImage *pimgGray=NULL;
	IplImage *pfg=NULL;
	IplImage *pfgRGB=NULL;
	IplImage *pBgGray=NULL;
	HI_S32 s32Result;             // if s32Result is 0 success
	HI_U32   FrameNum = 1;

	CvSize S;
	
	 string buff = "list1.txt";
	 const char * outputDir = "output";

	 ifstream infile;

	infile.open(buff.c_str());
	getline(infile, buff);

	IplImage * pimg=cvLoadImage(buff.c_str());
	HI_U16 u16Width=pimg->width;
	HI_U16 u16Height=pimg->height;

       cout<<"u16Width "<width,pimg->height);
			pimgGray = cvCreateImage(S,8,1);
			if(HI_NULL == pimgGray)
			{
				printf("pimgGray creat error");
				goto FAILURE;
			}
		}

        
        // pstDst
	pstDst = (IVE_MEM_INFO_S *)malloc(sizeof(IVE_MEM_INFO_S));
	
      


	stGMMCtrl.u0q16InitWeight = 3276; //0.05
    	stGMMCtrl.u0q16BgRatio = 52428;   //0.8
    	stGMMCtrl.u22q10MaxVar = (2000 << 10);
    	stGMMCtrl.u22q10MinVar = (200 << 10);
    	stGMMCtrl.u22q10NoiseVar = (225 << 10);
    	stGMMCtrl.u8q8VarThr = 1600;
    	stGMMCtrl.u8ModelNum =3;
    	stGMMCtrl.u0q16LearnRate = 327;

	cout<<"stGMMCtrl.u8ModelNum:"<nChannels(): "<nChannels<nChannels():   "<nChannels<imageData,pimgGray->width * pimgGray->height);
		
        	

		//foreground
		if(HI_NULL == stIveFg.pu8VirAddr[0])
		{
		s32Result = SAMPLE_COMM_IVE_CreateImage(&stIveFg,IVE_IMAGE_TYPE_U8C1, u16Width,u16Height);
		cout<<"s32Result Fg HI_CreateIveImage "<imageData, pimgGray->width * pimgGray->height);


		// background
		if(HI_NULL == stIveBg.pu8VirAddr[0])
		{
		s32Result = SAMPLE_COMM_IVE_CreateImage(&stIveBg,IVE_IMAGE_TYPE_U8C1, u16Width,u16Height);
		cout<<"s32Result Bg HI_CreateIveImage "<imageData, pimgGray->width * pimgGray->height);


		//pstModel
		cout<<"pimg->width"<width<height"<height<u32Size = stGMMCtrl.u8ModelNum * 7 * pimg->width * pimg->height;
		cout<<"pstDst->u32Size "<u32Size<u32Size);
		if (s32Result!= HI_SUCCESS)
		 {
		   printf("SAMPLE_COMM_IVE_CreateMemInfo fail\n");
		 }
                memset(pstDst->pu8VirAddr, 0, pstDst->u32Size);
		

			
		time_t start_t,end_t;
		start_t = clock();
		//cout<<"will get into GMM"<u32PhyAddr<<" "<<"pstDst->u32PhyAddr"<width,pimg->height);
			pfg = cvCreateImage(S,8,1);
			if(HI_NULL == pfg)
			{
				goto FAILURE;
			}
		}

		if(HI_NULL == pfgRGB)
		{
			S = cvSize(pimg->width,pimg->height);
			pfgRGB = cvCreateImage(S,8,3);
			if(HI_NULL == pfgRGB)
			{
				goto FAILURE;
			}
		}
		if(HI_NULL == pBgGray)
		{
			S = cvSize(pimg->width,pimg->height);
			pBgGray = cvCreateImage(S,8,1);
			if(HI_NULL == pBgGray)
			{
				goto FAILURE;
			}
		}
		memcpy(pfg->imageData, stIveFg.pu8VirAddr[0],pimg->width * pimg->height);
		memcpy(pBgGray->imageData,stIveBg.pu8VirAddr[0],pimg->height * stIveBg.u16Stride[0]);
		cvCvtColor( pfg, pfgRGB, CV_GRAY2BGR );

		FrameNum++;
		
	}

FAILURE:
	 IVE_MMZ_FREE(stIveImg.u32PhyAddr[0],stIveImg.pu8VirAddr[0]);
         IVE_MMZ_FREE(stIveFg.u32PhyAddr[0], stIveFg.pu8VirAddr[0]);
         IVE_MMZ_FREE(stIveBg.u32PhyAddr[0], stIveBg.pu8VirAddr[0]);
	 IVE_MMZ_FREE(pstDst->u32PhyAddr, pstDst->pu8VirAddr);
	if(HI_NULL != pstDst->pu8VirAddr)
	{
		free(pstDst->pu8VirAddr);
	}
	if(HI_NULL != pstDst)
	{
		free(pstDst);
	}

	if(HI_NULL != pfgRGB)
		cvReleaseImage(&pfgRGB);
	if(HI_NULL != pfg)
		cvReleaseImage(&pfg);
	if(HI_NULL != pBgGray)
		cvReleaseImage(&pBgGray);
	HI_MPI_SYS_Exit();
	
	return;
#endif
}

3516a HI_MPI_IVE_GMM 跑不通_第1张图片 3516a HI_MPI_IVE_GMM 跑不通_第2张图片

你可能感兴趣的:(3516a)