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

有个matlab上的程序,移植到opencv中,运行的很慢。自己找了找原因,发现opencv给的求特征值和特征向量那个函数很慢,比opencv里还要慢大概两分钟多,我的矩阵使用的数据结构是Mat这个类。opencv一般情况下不是应该比matlab快才对的吗?我第一次用opencv,matlab应该说也是第一次,求帮助。

OpenCV里的数学运算反而是其软肋。matlab是专业的数值计算工具,其内核是blas库,最NB的C线性代数库;而OpenCV的数学计算却没有用blas,所以只慢不快。
实际上根据我的经验,对一般的程序,如果不是C++编程功底足够好,或者matlab水平足够烂,是很难做到C程序比Matlab程序快的。追问

谢谢。我还想问问,我发现我程序里,单纯的两个大矩阵相乘也很慢(乘法不是我自己写的,就是opencv给的),是不是和我用Mat这个类来存储矩阵有关系,如果用cvMat是不是能快点。我的程序里计算一个20000*800的两个矩阵相乘要10几秒,求800*800矩阵的特征值要100多秒。是不是我用的是double类型对速度影响比较大,可如果用float又怕会溢出。

追答

    Mat的本质也是cvMat,对于那么大规模的数学运算其实没有什么区别。你当然可以试试。

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

温馨提示:答案为网友推荐,仅供参考
相似回答