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