OpenCV中文网站

 找回密码
 立即注册
搜索
热搜: 安装 配置
楼主: Shiqi Yu

EMCV:可在DSP上运行的OpenCV

[复制链接]
发表于 2009-9-9 00:56:42 | 显示全部楼层

EMCV:可在DSP上运行的OpenCV

解决问题后写一下解决方法啊,帮助后来人。
您好,我在OPENCV论坛上看到您,请问对于camshift 和kalman算法如何从opencv上移植到DSPdm642上呢,我有emcv,不知道如何用,谢谢帮助,我的QQ357094512
回复 支持 反对

使用道具 举报

发表于 2009-9-9 16:09:20 | 显示全部楼层

EMCV:可在DSP上运行的OpenCV

新手接触EMCV(opencv),期待在这里成才起来。
哪位大侠行行好,发个emcv给我,我想用在dm642上,谢谢!
再次感谢~

我的邮箱:sunshinexp@foxmail.com
回复 支持 反对

使用道具 举报

发表于 2009-9-10 19:02:04 | 显示全部楼层

EMCV:可在DSP上运行的OpenCV

新手接触EMCV(opencv),期待在这里成才起来。
哪位大侠行行好,发个emcv给我,我想用在dm642上,谢谢!
再次感谢~

我的邮箱:sunshinexp@foxmail.com


论坛里有教获取EMCV的方法,可以在论坛里搜一下
回复 支持 反对

使用道具 举报

发表于 2009-12-28 15:07:21 | 显示全部楼层

EMCV:可在DSP上运行的OpenCV

请问用opencv编的算法,有办法弄到TI的6446开发板上么?我们要做实时处理的,用摄像头获取视频图像,然后通过DSp运行自己算法。处理结果在显示器上输出。请有这方面经验的朋友多多给予指点,小弟先谢过了!
回复 支持 反对

使用道具 举报

发表于 2010-1-12 20:55:45 | 显示全部楼层

EMCV:可在DSP上运行的OpenCV

您好!于老师,我在讲程序改成cpp时运行以后出现以下错误:
"vportcap.cpp", line 105: error: badly formed pragma
"vportcap.cpp", line 108: error: badly formed pragma
"vportcap.cpp", line 111: error: badly formed pragma
双击错误处跳转到程序中:       
         #pragma DATA_SECTION(capChaAYSpace, ".capChaAYSpace")
        /* buffer to store captured Y-data */
        Uint8 capChaAYSpace[720*588];
        #pragma DATA_SECTION(capChaACbSpace, ".capChaACbSpace")
        /* buffer to store captured Cb-data */
        Uint8 capChaACbSpace[360*588];
        #pragma DATA_SECTION(capChaACrSpace, ".capChaACrSpace")
        /* buffer to store captured Cr-data */
        Uint8 capChaACrSpace[360*588];
请指导!谢谢!
回复 支持 反对

使用道具 举报

发表于 2010-1-25 10:13:59 | 显示全部楼层

EMCV:可在DSP上运行的OpenCV

大家好!我在讲程序改成cpp时运行以后出现以下错误:
"vportcap.cpp", line 105: error: badly formed pragma
"vportcap.cpp", line 108: error: badly formed pragma
"vportcap.cpp", line 111: error: badly formed pragma
双击错误处跳转到程序中:
#pragma DATA_SECTION(capChaAYSpace, ".capChaAYSpace")
/* buffer to store captured Y-data */
Uint8 capChaAYSpace[720*588];
#pragma DATA_SECTION(capChaACbSpace, ".capChaACbSpace")
/* buffer to store captured Cb-data */
Uint8 capChaACbSpace[360*588];
#pragma DATA_SECTION(capChaACrSpace, ".capChaACrSpace")
/* buffer to store captured Cr-data */
Uint8 capChaACrSpace[360*588];
请指导!谢谢!
回复 支持 反对

使用道具 举报

发表于 2010-2-4 15:20:58 | 显示全部楼层

EMCV:可在DSP上运行的OpenCV

由 chenjun0420 » 2008-07-02 19:36

大家好 我把这个opencv函数可以在我的板子上运行了(瑞泰公司的一款ICETEK-DM642-B的开发板)
首先感谢于老师和chai2010 的帮助

我总结一下错误 一共我遇到的有三处:
1 cxmisc.h的第 233行
CvSize cvGetMatSize(const CvMat* mat)
{
CvSize size = {mat->width,mat->height};
return size;
}出现 这个错误 error: expression must have a constant value

我把mat->width,mat->height用 mat->cols,mat->rows;代替就好了

2在cxtypes.h 的第192行
CV_INLINE int cvFloor( double value )
{
return int(floor(value));
}
出现这个错误 error: expected an expression

改正如下
CV_INLINE int cvFloor( double value )
{
int a = floor(value);
return a;
}

3在cxmisc.h中 line 219
CV_INLINE void* cvAlignPtr( const void* ptr, int align=32)
{
assert( (align & (align-1)) == 0 );
return (void*)(((size_t)ptr + align - 1) & (~(size_t)(align-1)) );
}
函数名那块是 219行 出现了个这样的错误error: expected a ")",

把那个 align 的缺省值 删掉就正确了。


以上是我在用到过程中的3个问题的解决方法,希望对用到的人有用。

另外我要做的是在dsp上进行人脸检测,用cv的adaboost算法,就是用cv的检测目标函数,请问于老师你也在做这个吗?我也会努力的,若果你有更新请及时发到论坛上,谢谢于老师!

因为cvCanny是在cv.h声明的,所以我在.C文件#include "cv.h",然后在下面调用cvCanny函数。工程里添加定义cvCanny的C++源文件:cvcanny.cpp(这个是从opencv直接拷过来的)。编译也遇到了上面的三个问题,后两个问题按照chenjun提到的修改方法,都改过来了。就是第一个错误,没改之前是:
  1. ---------------------------  canny_emcv.pjt - Debug  ---------------------------
  2. [cvcanny.cpp] "C:\\CCStudio_v3.3\\C6000\\cgtools\\bin\\cl6x" -g -fr"C:/CCStudio_v3.3/MyProjects/canny_emcv/Debug" -i"C:/dvevm_1_20/xdais_5_10/packages/ti/xdais/dm" -i"C:/dvevm_1_20/xdais_5_10/packages/ti/xdais" -i"C:/dvevm_1_20/codec_engine_1_10_01/packages/ti/sdo/ce/trace" -i"C:/dvevm_1_20/dvevm_1_20/cg6x_6_0_14/include" -d"_DEBUG" -mv6400 -@"Debug.lkf" "cvcanny.cpp"
  3. [vidpro.c] "C:\\CCStudio_v3.3\\C6000\\cgtools\\bin\\cl6x" -g -fr"C:/CCStudio_v3.3/MyProjects/canny_emcv/Debug" -i"C:/dvevm_1_20/xdais_5_10/packages/ti/xdais/dm" -i"C:/dvevm_1_20/xdais_5_10/packages/ti/xdais" -i"C:/dvevm_1_20/codec_engine_1_10_01/packages/ti/sdo/ce/trace" -i"C:/dvevm_1_20/dvevm_1_20/cg6x_6_0_14/include" -d"_DEBUG" -mv6400 -@"Debug.lkf" "vidpro.c"
  4. "cxmisc.h", line 235: error: expression must have a constant value
  5. "cxmisc.h", line 235: error: expression must have a constant value
  6. "cxmisc.h", line 724: warning: typedef name has already been declared (with same type)
  7. "cxmisc.h", line 755: warning: typedef name has already been declared (with same type)
  8. "vidpro.c", line 310: warning: variable "ce" was set but never used
  9. 2 errors detected in the compilation of "vidpro.c".
  10. >> Compilation failure
  11. Build Complete,
  12.   2 Errors, 3 Warnings, 0 Remarks.
复制代码

按照chenjun改完之后还有错误:
  1. [cvcanny.cpp] "C:\\CCStudio_v3.3\\C6000\\cgtools\\bin\\cl6x" -g -fr"C:/CCStudio_v3.3/MyProjects/canny_emcv/Debug" -i"C:/dvevm_1_20/xdais_5_10/packages/ti/xdais/dm" -i"C:/dvevm_1_20/xdais_5_10/packages/ti/xdais" -i"C:/dvevm_1_20/codec_engine_1_10_01/packages/ti/sdo/ce/trace" -i"C:/dvevm_1_20/dvevm_1_20/cg6x_6_0_14/include" -d"_DEBUG" -mv6400 -@"Debug.lkf" "cvcanny.cpp"
  2. [vidpro.c] "C:\\CCStudio_v3.3\\C6000\\cgtools\\bin\\cl6x" -g -fr"C:/CCStudio_v3.3/MyProjects/canny_emcv/Debug" -i"C:/dvevm_1_20/xdais_5_10/packages/ti/xdais/dm" -i"C:/dvevm_1_20/xdais_5_10/packages/ti/xdais" -i"C:/dvevm_1_20/codec_engine_1_10_01/packages/ti/sdo/ce/trace" -i"C:/dvevm_1_20/dvevm_1_20/cg6x_6_0_14/include" -d"_DEBUG" -mv6400 -@"Debug.lkf" "vidpro.c"
  3. "cxmisc.h", line 236: error: expression must have a constant value
  4. "cxmisc.h", line 236: error: expression must have a constant value
  5. "cxmisc.h", line 725: warning: typedef name has already been declared (with same type)
  6. "cxmisc.h", line 756: warning: typedef name has already been declared (with same type)
  7. "vidpro.c", line 310: warning: variable "ce" was set but never used
  8. 2 errors detected in the compilation of "vidpro.c".
  9. >> Compilation failure
  10. Build Complete,
  11.   2 Errors, 3 Warnings, 0 Remarks.
复制代码
cxmisc.h相应代码如下:
  1. 233 CV_INLINE  CvSize  cvGetMatSize( const CvMat* mat )
  2. 234 {
  3. 235    // CvSize size = { mat->width, mat->height };
  4. 236     CvSize size = { mat->cols, mat->rows };
  5. 237         // CvSize size = {mat->rows,mat->cols};
  6. 238     return size;
  7. 239  }
复制代码

请各位老师、同学、高手指教!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-2-4 16:26:02 | 显示全部楼层

EMCV:可在DSP上运行的OpenCV

按照chenjun改完之后还有错误:
  1. [cvcanny.cpp] "C:\\CCStudio_v3.3\\C6000\\cgtools\\bin\\cl6x" -g -fr"C:/CCStudio_v3.3/MyProjects/canny_emcv/Debug" -i"C:/dvevm_1_20/xdais_5_10/packages/ti/xdais/dm" -i"C:/dvevm_1_20/xdais_5_10/packages/ti/xdais" -i"C:/dvevm_1_20/codec_engine_1_10_01/packages/ti/sdo/ce/trace" -i"C:/dvevm_1_20/dvevm_1_20/cg6x_6_0_14/include" -d"_DEBUG" -mv6400 -@"Debug.lkf" "cvcanny.cpp"
  2. [vidpro.c] "C:\\CCStudio_v3.3\\C6000\\cgtools\\bin\\cl6x" -g -fr"C:/CCStudio_v3.3/MyProjects/canny_emcv/Debug" -i"C:/dvevm_1_20/xdais_5_10/packages/ti/xdais/dm" -i"C:/dvevm_1_20/xdais_5_10/packages/ti/xdais" -i"C:/dvevm_1_20/codec_engine_1_10_01/packages/ti/sdo/ce/trace" -i"C:/dvevm_1_20/dvevm_1_20/cg6x_6_0_14/include" -d"_DEBUG" -mv6400 -@"Debug.lkf" "vidpro.c"
  3. "cxmisc.h", line 236: error: expression must have a constant value
  4. "cxmisc.h", line 236: error: expression must have a constant value
  5. "cxmisc.h", line 725: warning: typedef name has already been declared (with same type)
  6. "cxmisc.h", line 756: warning: typedef name has already been declared (with same type)
  7. "vidpro.c", line 310: warning: variable "ce" was set but never used
  8. 2 errors detected in the compilation of "vidpro.c".
  9. >> Compilation failure
  10. Build Complete,
  11.   2 Errors, 3 Warnings, 0 Remarks.
复制代码
cxmisc.h相应代码如下:
  1. 233 CV_INLINE  CvSize  cvGetMatSize( const CvMat* mat )
  2. 234 {
  3. 235    // CvSize size = { mat->width, mat->height };
  4. 236     CvSize size = { mat->cols, mat->rows };
  5. 237         // CvSize size = {mat->rows,mat->cols};
  6. 238     return size;
  7. 239  }
复制代码

请各位老师、同学、高手指教!
236行可改为:
     CvSize size = cvSize( mat->cols, mat->rows );

编译器对c语言标准的支持不同造成的。
另建议你仔细复习一下c语言,并了解一下OpenCV的基本结构。

另外,cvCanny在emcv中没有实现,如果需要你要自己实现或移植。
回复 支持 反对

使用道具 举报

发表于 2010-2-4 16:44:32 | 显示全部楼层

EMCV:可在DSP上运行的OpenCV

236行可改为:
     CvSize size = cvSize( mat->cols, mat->rows );

编译器对c语言标准的支持不同造成的。
另建议你仔细复习一下c语言,并了解一下OpenCV的基本结构。

另外,cvCanny在emcv中没有实现,如果需要你要自己实现或移植。
非常感谢,于老师,修改过后果然build通过。了解一下OpenCV的基本结构,是不是真要像论坛上说的opencv的三种境界那样,先把opencv的例程自己动手跑一遍?还有移植opencv是不是就是像论坛里说的?
由 chai2010 » 2008-07-31 9:13

frobby 写道:
看EMCV的文件,感觉和opencv的差别不大啊,能不能解释一下?
谢谢!


主要就是只保留标准C语言部分,而且DSP也支持标准C语言,所以可以用。

唯一的变化是用memalign代替malloc,这样保证分配的内存对应到n字节。
memalign函数是ti编译器中带的函数,在PC上不可用(可以用函数模拟)。

另外,有一些函数在DSP中缺少定义(不是标准C库中的函数),例如
cvaux\\cvvidsurv.hpp中的strdup复制字符串函数。

对于一些不适于嵌入式环境的部分也被裁剪掉了,例如稀疏矩阵等。
emcv主要是移植cv和cxcore模块,像highgui模块只简单实现了BMP图像的读写。

在emcv中一般是采用_TMS320C6X宏来判断是DSP6x系列,然后针对DSP环境
进行配置。具体差别你可以用Beyond Compare工具比较一下。
<!-- m --><a class=\"postlink\" href=\"http://chaishushan.blog.163.com/\">http://chaishushan.blog.163.com/</a><!-- m -->

chai2010
OpenCV博士

帖子: 698
注册: 2007-08-08 17:11
地址: 深圳
页首
Re: 为什么EMCV可以支持嵌入式应用?
由 frobby » 2008-07-31 9:32

好的,非常感谢!
frobby
OpenCV初中生

帖子: 34
注册: 2007-03-23 12:41
页首
Re: 为什么EMCV可以支持嵌入式应用?
由 bingpo » 2008-11-23 14:29

嵌入式开发很重要的一点是内存对齐,这是因为精简指令CPU,像MIPS一般来说,所有机器指令都是等长的,数据线访问内存时也是按照访问单元去对齐访问的,这样可以充分利用流水线的优化性能。在出现非对齐访问的时候,这类CPU会直接抛出异常。所谓移植,一般主要是这个工作。
另外,不同版本不同厂商的c编译器实现,对ANSI C的支持程度是不同的,所以这也是一部分工作,其实也可以自己编译自己的gcc toolchain.
回复 支持 反对

使用道具 举报

发表于 2010-4-1 16:25:19 | 显示全部楼层

EMCV:可在DSP上运行的OpenCV

各位大侠好,我下载了EMCV可是不知道怎么用,那个帖子“学用EMCV”只是针对DM6437我的是DM6446,上面说的对于6446不适用,请问我该怎么办??
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|OpenCV中文网站

GMT+8, 2024-3-28 18:11 , Processed in 0.011037 second(s), 13 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表