OpenCV中文网站

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 安装 配置
查看: 85074|回复: 114

EMCV:可在DSP上运行的OpenCV

[复制链接]
发表于 2008-7-1 16:44:52 | 显示全部楼层 |阅读模式
EMCV项目主页: <!-- m --><a class="postlink" href="http://sf.net/projects/emcv">http://sf.net/projects/emcv</a><!-- m -->

EMCV全称为Embedded Computer Vision Library,是一个可在TI DM64x系列DSP上运行的计算机视觉库。EMCV提供了跟OpenCV完全一致的函数接口,通过EMCV,你可以轻松的将你的OpenCV算法移植到DSP,甚至不用改一行代码。

目前EMCV已经支持IplImage, CvMat,CvSeq等基本数据结构,
可使用cvCreateImage等创建和释放图像,以及contour检测等。

EMCV刚刚启动,希望得到您的代码贡献:
目前您可以通过subversion客户端获取源代码,源代码位于 <!-- m --><a class="postlink" href="https://emcv.svn.sourceforge.net/svnroot/emcv">https://emcv.svn.sourceforge.net/svnroot/emcv</a><!-- m -->
回复

使用道具 举报

发表于 2009-3-21 19:56:23 | 显示全部楼层

EMCV:可在DSP上运行的OpenCV

人家于老师在之前的帖子里已经说的很明白了:
Please use a subversion client to check out
而且sf网站上也已经说的很明白了:
Subversion Access

This project\'s SourceForge.net Subversion repository can be checked out through SVN with the following instruction set:
svn co <!-- m --><a class=\"postlink\" href=\"https://emcv.svn.sourceforge.net/svnroot/emcv\">https://emcv.svn.sourceforge.net/svnroot/emcv</a><!-- m --> emcv

为什么大家还都是只想捡现成的呢?就等着以后每次代码更新都重新发布rar了?

具体说下方法吧:
windows用户,安装TortoiseSVN,网上大把下载的,是图形界面的,具体用法网上也很多,自己google,开发软件,不掌握基本的版本控制概念、不掌握至少一种版本控制工具,是不行的。
linux用户,直接安装svn命令,然后执行svn co <!-- m --><a class=\"postlink\" href=\"https://emcv.svn.sourceforge.net/svnroot/emcv\">https://emcv.svn.sourceforge.net/svnroot/emcv</a><!-- m --> emcv,以后如果版本有更新,svn update即可,也可以直接svn help看帮助。
我刚试过,可以下载,需要的自己去下载,不要老等着现成的。
  1. anders@anders-laptop:/work/books/opencv/emcv$ svn co https://emcv.svn.sourceforge.net/svnroot/emcv emcv
  2. A    emcv/trunk
  3. A    emcv/trunk/License
  4. A    emcv/trunk/cxcore
  5. A    emcv/trunk/cxcore/loadsave.cpp
  6. A    emcv/trunk/cxcore/cxtypes.h
  7. A    emcv/trunk/cxcore/cxcopy.cpp
  8. A    emcv/trunk/cxcore/cxtables.cpp
  9. A    emcv/trunk/cxcore/cxouttext.cpp
  10. A    emcv/trunk/cxcore/cxarray.cpp
  11. A    emcv/trunk/cxcore/cxcmp.cpp
  12. A    emcv/trunk/cxcore/cxarithm.cpp
  13. A    emcv/trunk/cxcore/cxerror.cpp
  14. A    emcv/trunk/cxcore/cxalloc.cpp
  15. A    emcv/trunk/cxcore/cxdrawing.cpp
  16. A    emcv/trunk/cxcore/_cxcore.h
  17. A    emcv/trunk/cxcore/cxcore.h
  18. A    emcv/trunk/cxcore/cxerror.h
  19. A    emcv/trunk/cxcore/cxmisc.h
  20. A    emcv/trunk/cxcore/cxdatastructs.cpp
  21. A    emcv/trunk/cvaux
  22. A    emcv/trunk/cvaux/cvmat.hpp
  23. A    emcv/trunk/cvaux/cvvidsurv.hpp
  24. A    emcv/trunk/cvaux/cvaux.h
  25. A    emcv/trunk/cvaux/cvaux.hpp
  26. A    emcv/trunk/cv
  27. A    emcv/trunk/cv/_cvmatrix.h
  28. A    emcv/trunk/cv/cvtypes.h
  29. A    emcv/trunk/cv/cvapprox.cpp
  30. A    emcv/trunk/cv/cvtables.cpp
  31. A    emcv/trunk/cv/cvcontours.cpp
  32. A    emcv/trunk/cv/_cvlist.h
  33. A    emcv/trunk/cv/cvshapedescr.cpp
  34. A    emcv/trunk/cv/_cv.h
  35. A    emcv/trunk/cv/cv.h
  36. A    emcv/trunk/cv/cv.hpp
  37. A    emcv/trunk/cv/cvfilter.cpp
  38. A    emcv/trunk/cv/cvmorph.cpp
  39. A    emcv/trunk/cv/cvpyramids.cpp
  40. A    emcv/trunk/cv/_cvgeom.h
  41. A    emcv/trunk/cv/_cvipp.h
  42. A    emcv/trunk/cv/cvthresh.cpp
  43. A    emcv/trunk/cv/cvutils.cpp
  44. A    emcv/trunk/cv/_cvimgproc.h
  45. 取出版本 5。
复制代码
您好于老师,EMCV怎么下不了啊?请我发一份给我好吗?论坛里面哪位有也帮帮我,于老师可能很忙
我的邮箱meraker@163.com谢谢
[quote=&quot;lukysuper&quot;:2cw8ej6q]于老师,您好。在这个网站http://sf.net/projects/emcv上无法下载emcv的相关东西,可否麻烦您发一份到我的邮箱lukysuper@163.com?非常感谢!
Please use a subversion client to check out[/quote:2cw8ej6q]
回复 支持 1 反对 0

使用道具 举报

发表于 2009-3-20 00:06:12 | 显示全部楼层

EMCV:可在DSP上运行的OpenCV

从回帖来看,许多概念你还不太清楚:
1、所谓嵌入式系统一般只支持C,那是扯蛋。
2、不存在说哪一种架构的处理器是否只支持C,对处理器来说,看到的只有二进制目标码,所以只要能够把任何语言的编译器移植到该架构下,那么就能根据该语言生成可以在该架构处理器上运行的目标码。用你的话来说,就是“可以支持这种语言”。
3、所谓这个语言那个语言,当他被编译器转化为目标指令集之后,就都一样了,不要光看着那几个“class”的关键字发愣,那是给人看的,而不是给处理器看的。
4、据我所知,还比较少见到只支持C而不支持C++的处理器,因为这两个东西实质上太接近了,而gnu compiler toolchain又具有很好的跨平台特性,顶多只是不完全支持所有的C++标准罢了。当然,单片机除外。
达芬奇只支持C,还得改写
回复 支持 1 反对 0

使用道具 举报

发表于 2008-7-1 18:14:10 | 显示全部楼层

EMCV:可在DSP上运行的OpenCV

你好 于老师
这个网站我怎么上不去,麻烦你能否发我邮箱一份,我先前试着把opencv的源代码弄到DSP(DM642)上,一直没有成功。
我的邮箱是:723724wen@163.com
谢谢于老师!
回复 支持 反对

使用道具 举报

发表于 2008-7-2 09:54:24 | 显示全部楼层

EMCV:可在DSP上运行的OpenCV

于老师,我用的是瑞泰公司的一款ICETEK-DM642-B的开发板,在把您的头文件和cpp文件包含进他的例程后,在cxmisc.h的第 233行
CvSize  cvGetMatSize(const CvMat* mat)
{
    CvSize size = {mat->width,mat->height};   
    return size;
}出现 这个错误    error: expression must have a constant value
我先申请个CvSize 变量,再给它的成员依次赋值也不对,还是同样的错误,

在cxtypes.h 的第192行   
CV_INLINE  int  cvFloor( double value )
{
        return int(floor(value));
}
出现这个错误 error: expected an expression
其他类似的这样的内联函数也没有报错 不知什么愿意

请于老师指点下
回复 支持 反对

使用道具 举报

发表于 2008-7-2 11:16:02 | 显示全部楼层

EMCV:可在DSP上运行的OpenCV

于老师,我用的是瑞泰公司的一款ICETEK-DM642-B的开发板,在把您的头文件和cpp文件包含进他的例程后,在cxmisc.h的第 233行
CvSize  cvGetMatSize(const CvMat* mat)
{
    CvSize size = {mat->width,mat->height};   
    return size;
}出现 这个错误    error: expression must have a constant value
我先申请个CvSize 变量,再给它的成员依次赋值也不对,还是同样的错误,

在cxtypes.h 的第192行   
CV_INLINE  int  cvFloor( double value )
{
        return int(floor(value));
}
出现这个错误 error: expected an expression
其他类似的这样的内联函数也没有报错 不知什么愿意

请于老师指点下

你用的是C语言还是C++ ?
如果是C语言, int(floor(value))之类的语法可能不支持。
回复 支持 反对

使用道具 举报

发表于 2008-7-2 12:34:44 | 显示全部楼层

EMCV:可在DSP上运行的OpenCV

谢谢
CCS中c和c++都可以用
我改成
int a;
a = (floor)(value);
return a;

还是不行;
回复 支持 反对

使用道具 举报

发表于 2008-7-2 13:14:38 | 显示全部楼层

EMCV:可在DSP上运行的OpenCV

谢谢
CCS中c和c++都可以用
我改成
int a;
a = (floor)(value);
return a;

还是不行;

如果还有问题, 那你就把相关函数扣出来,写到自己的程序中,
这样就是一个C语言程序,看看还有没有问题。
回复 支持 反对

使用道具 举报

发表于 2008-7-2 16:27:00 | 显示全部楼层

EMCV:可在DSP上运行的OpenCV

谢谢  第2个问题解决了
但是第一个还是没有解决
cxmisc.h的第 233行
CvSize cvGetMatSize(const CvMat* mat)
{
CvSize size = {mat->width,mat->height};
return size;
}出现 这个错误 error: expression must have a constant value

还有个问题
在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 &quot;)&quot;,让人摸不着头脑
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-7-2 17:10:32 | 显示全部楼层

EMCV:可在DSP上运行的OpenCV

解决问题后写一下解决方法啊,帮助后来人。
回复 支持 反对

使用道具 举报

发表于 2008-7-2 19:36:28 | 显示全部楼层

EMCV:可在DSP上运行的OpenCV

大家好 我把这个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 &quot;)&quot;,

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


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

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

使用道具 举报

发表于 2008-7-3 09:12:08 | 显示全部楼层

EMCV:可在DSP上运行的OpenCV

大家好 我把这个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 &quot;)&quot;,

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


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

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

你遇到的3个问题应该都是采用C语言的原因。

1. CvMat在C语言中只定义了rows和cols
  1. typedef struct CvMat
  2. {
  3.     int type;
  4.     int step;
  5.     /* for internal use only */
  6.     int* refcount;
  7.     int hdr_refcount;
  8.     union
  9.     {
  10.         uchar* ptr;
  11.         short* s;
  12.         int* i;
  13.         float* fl;
  14.         double* db;
  15.     } data;
  16. #ifdef __cplusplus
  17.     union
  18.     {
  19.         int rows;
  20.         int height;
  21.     };
  22.     union
  23.     {
  24.         int cols;
  25.         int width;
  26.     };
  27. #else
  28.     int rows;
  29.     int cols;
  30. #endif
  31. }
  32. CvMat;
复制代码

采用rows和cols访问应该是最好的。

2. int(v)的语法C语言不支持

3. C语言不支持默认参数
  1. cvAlignPtr( const void* ptr, int align=32)
复制代码

OpenCV是用CV_DEFAULT来处理的:
  1. #ifndef CV_EXTERN_C
  2.     #ifdef __cplusplus
  3.         #define CV_EXTERN_C extern &quot;C&quot;
  4.         #define CV_DEFAULT(val) = val
  5.     #else
  6.         #define CV_EXTERN_C
  7.         #define CV_DEFAULT(val)
  8.     #endif
  9. #endif
复制代码

函数定位改为:
  1. cvAlignPtr( const void* ptr, int align CV_DEFAULT(32))
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

手机版|OpenCV中文网站  

GMT+8, 2019-11-22 17:23 , Processed in 0.059318 second(s), 17 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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