根据这个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
。
谢谢,
最佳答案
Matlab 内建函数自带 mkl 和 opencv 的 dont。因此,如果两者都存在两个完全等效的函数,则 matlab 可能比 opencv 快(很多)。我曾尝试在大型矩阵上进行伪逆运算,而 matlab 击败了一切(openblas、 Armadillo 、自积分 mkl 等)至少 2 倍。然后我就不再弄清楚为什么了,只是将数据加载到 matlab 中,让它做这件事。 opencv 是迄今为止最慢的。在 opencv 中尝试对 10000x10000 矩阵进行矩阵乘法。在我的笔记本电脑上花了 10 分钟。 Matlab用了1分钟。
关于c++ - Matlab 仍然比 C++ 中的 opencv 慢吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24761170/