declaration may not appear after executable statement in block


前些天就知道在TI提供的encodedecode demo里面,如果简单处理图像就直接在DSP端处理缓存就可以直接看到效果。原来在ARM端OPENCV交叉编译已经成功,
所以把EMCV库里面的 cv  cxcore文件夹里面的文件都复制到/demo/MyImageGray/codec/filecopy_dec/下面,然后在filecopy_dec.c中添加需要的结构
参考igor_facedetect.c里面用到的几个函数,只要那些函数包括在emcv中,基本就可以移植了。
首先 在  filecopy_dec.c  文件夹里面添加  #include"cv.h" 然后编译,会提示不少错误,都是一些语法问题的错误,有点基本C语言的基础都能修正,没有太大的问题。
这个函数中提示找不到 width 和 height这两个量。在OPENCV论坛里面有人说过这个,所以知道把width 和 height   改成 下面那种形式就可以了。参考下mat的定义,
也就知道为什么这么改了
CV_INLINE  CvSize  cvGetMatSize( const CvMat* mat )
{
//    CvSize size = { mat->width, mat->height };

    CvSize size;
    size.width = mat->cols;
    size.height = mat-> rows;
// = { mat->cols, mat->rows };
    return size;
}
修正一大堆语法错误以后在filecopy_dec.c 文件的PictureGray 中添加我们想要的数据结构 IplImage
然后编译

"filecopy_dec.c", line 200: error #270: declaration may not appear after executable statement in block

这个提示的意思大概是一个声明语句,要放在一个函数的开头,没有写执行语句之前。否则就会出现这个错误。

所以把这个IplImage的定义提到函数外 错误就削除了,改后的函数如下
#define IMAGESIZE (720*480)
static void PictureGray(void *pInbuf,void *pOutbuf,unsigned int len)

{

    unsigned int i;
    unsigned int * pIn = (unsigned int*)pInbuf;
    unsigned int * pOut= (unsigned int*)pOutbuf;

 
    unsigned char image[IMAGESIZE];


    len >>= 2;

    
    iplImage = cvCreateImageHeader(cvSize(720,480),IPL_DEPTH_8U,1);
    cvSetData(iplImage,image,720);
for(i=0;i<len;i++)

    {
    
     *pOut = *pIn & 0xff00ff00|0x00800080;  
 
     image[i] = *( (unsigned char *)pIn +1 );
     image[i+1] = *( (unsigned char *)pIn +3) ;  
           //get the Y in image[] form a gray image   by dick

    pIn ++;
    pOut ++;

    }
    
    cvReleaseImageHeader(&iplImage);

}

其实添加的部分就是把亮度提取出来变成一副图像,添加人脸识别只要在这个灰度图像上检测,然后根据检测结果去修改显示buffer就OK了,
暂时想到的就是这样做
明天继续吧。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值