【发布时间】:2014-07-15 14:42:14
【问题描述】:
根据这个link和这个one,据说opencv比matlab快很多。第一个链接写于 2012 年 3 月,第二个链接比那晚一点。
在第一个链接中,它说,“用 OpenCV 编写的程序比用 Matlab 编写的类似程序运行得快得多。” 并评价 Matlab: 2/10 和 OpenCV: 9/10
考虑一下,我有两个 float Matrix,其大小为 1024*1024(mat1 和 mat2)。我想关联这些矩阵。
在matlab中,
corr2(mat1,mat2); //70-75 ms
在opencv中,c++
Mat result(1,1,CV_32F);
matchTemplate(mat1,mat2,result, CV_TM_CCOEFF_NORMED); // 145-150 ms
据我所知,c 和 c++ 的速度大致相同。
所以,我想知道为什么 matlab 在进行互相关时比 opencv/c++ 快。 是因为我在比较错误的东西(即使结果相同)还是 matlab 的互相关实现比 opencv 实现快一倍?
请注意,我使用的是Matlab 2013a 和Visual Studio 2010。
谢谢,
【问题讨论】:
-
OpenCV 使用几个优化的库来加速计算,所以问题是:你的 OpenCV 二进制文件是否被编译为使用它们?否则,Matlab 可能会占上风。
-
另外,还有一件更重要的事情。 MATLAB 中的所有值都是浮点数,而 OpenCV 有 uchar、short、int、float、double。这就是为什么 OpenCV 更快的原因,因为大多数功能都是在 8 位数据上进行的。
标签: c++ performance matlab opencv cross-correlation