各位大神,我在dsp里做人脸识别算法时遇到一点问题,可能比较简单,不过还望各位大神指导下,如下:
func(...)
[
FVID2_Frame *pFrame;
这里是获取YUV数据,填充pFrame
U
tils_queGet(&pObj->processQ, (Ptr *)&pFrame, 1, BIOS_WAIT_FOREVER);
....
static unsigned int a=0;
static unsigned char *pYUV = NULL;
if(a==0)
[
//这里图像是cif的,所以宽高我暂时写死了
pYUV = (unsigned char *)malloc(sizeof(char)*352*288*1.5);
if( pYUV == NULL )
[
Vps_printf("MMMMMMMMMMMMMMMMMMMMMMMMMMn");
return FVID2_EFAIL;
]
a=1;
]
AlgLink_FaceChStatus pChStatus;///算法结果结构体
memcpy(pYUV, pFrame->addr[0][0], 352*288);///这里我只拷贝了Y分量的数据--------------------------------------(1)式
pChStatus.pYUV = pYUV;//将Y数据的地址赋值给算法结果结构里的pChStatus.pYUV指针 ----------------------------(2)式
///发送处理后的结果给A8端,然后触发A8里之前注册的回调函数,这里我只是测试,所以实际没有做算法处理
System_linkControl(SYSTEM_LINK_ID_HOST,
VSYS_EVENT_FACE_RESULT,
&pChStatus,
sizeof(AlgLink_FaceChStatus),
FALSE);
]
在A8的回调函数里面,首先对 pChStatus.pYUV做了内存映射,然后写文件
FILE *fYUV;
int ret = VE_mapMem((unsigned int)pFaceResult->pYUV, 352*288, (void **)&pVirYUV);
fwrite(pVirYUV, 1, 352*288, fYUV);///写Y分量到文件中
用7YUV软件打开写好的Y分量文件,结果显示异常,图像中有一条一条的黑条,如果是写YUV数据就是图像夹杂着绿色的横条,
,然后我又做了另外一个测试,注释掉(1)式,(2)式改成 pChStatus.pYUV=pFrame->addr[0][0];
这里再次写Y分量的文件显示就是正常的了,
为什么会出现这2种情况?2种情况之间就多了一个memcpy.