opencv程序很慢,比matlab的代码还慢。

有个matlab上的程序,移植到opencv中,运行的很慢。自己找了找原因,发现opencv给的求特征值和特征向量那个函数很慢,比opencv里还要慢大概两分钟多,我的矩... 有个matlab上的程序,移植到opencv中,运行的很慢。自己找了找原因,发现opencv给的求特征值和特征向量那个函数很慢,比opencv里还要慢大概两分钟多,我的矩阵使用的数据结构是Mat这个类。opencv一般情况下不是应该比matlab快才对的吗?我第一次用opencv,matlab应该说也是第一次,求帮助。 展开
 我来答
WM_THU
2014-02-15 · TA获得超过7164个赞
知道大有可为答主
回答量:4285
采纳率:80%
帮助的人:3951万
展开全部
OpenCV里的数学运算反而是其软肋。matlab是专业的数值计算工具,其内核是blas库,最NB的C线性代数库;而OpenCV的数学计算却没有用blas,所以只慢不快。
实际上根据我的经验,对一般的程序,如果不是C++编程功底足够好,或者matlab水平足够烂,是很难做到C程序比Matlab程序快的。
追问
谢谢。我还想问问,我发现我程序里,单纯的两个大矩阵相乘也很慢(乘法不是我自己写的,就是opencv给的),是不是和我用Mat这个类来存储矩阵有关系,如果用cvMat是不是能快点。我的程序里计算一个20000*800的两个矩阵相乘要10几秒,求800*800矩阵的特征值要100多秒。是不是我用的是double类型对速度影响比较大,可如果用float又怕会溢出。
追答
  1. Mat的本质也是cvMat,对于那么大规模的数学运算其实没有什么区别。你当然可以试试。

  2. 用float确实可以提高运算速度。可以尝试一下嘛,毕竟不是所有地方都有溢出风险的。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式