小编fri*_*day的帖子

OpenCV/C++程序比它的numpy对手慢,我该怎么办?

我前段时间实现了Python中的Procrustes Analysis算法,并被告知最近将它移植到OpenCV/C++.在完成它之后,我运行了一些测试,对于相同的输入/实例,C++代码花费了Python代码的两倍时间(大约分别为8秒和4秒.为了确保我,我重复测试一千次)我不是在一个太小的时期测量它们.我对这些结果感到困惑.

我已经使用gprof试图理解发生了什么,但除了cv :: Mat :: ~Mat()占用34.67%的执行时间并被调用之外,我无法说出错误.比任何其他功能多100倍.不知道我应该怎么做,除非我应该替换std :: vectors或raw数组的cv :: Mats,这对我来说似乎都是不好的做法.

void align(const cv::Mat& points, const cv::Mat& pointsRef, cv::Mat& res, cv::Mat& ops) {
    cv::Mat pts(points.rows, points.cols, CV_64FC1);
    cv::Mat ptsRef(points.rows, points.cols, CV_64FC1);
    points.copyTo(pts);
    pointsRef.copyTo(ptsRef);

    cv::Mat avgs = meanOfColumns(pts);
    for(int i = 0; i < avgs.cols; i++) {
        pts.col(i) -= avgs.col(i);
    }
    cv::Mat avgsR = meanOfColumns(ptsRef);
    for(int i = 0; i < avgsR.cols; i++) {
        ptsRef.col(i) -= avgsR.col(i);
    }

    cv::Mat x2(pts.rows, 1, CV_64FC1);
    cv::Mat y2(pts.rows, 1, CV_64FC1);
    cv::Mat x2R(pts.rows, 1, CV_64FC1);
    cv::Mat …
Run Code Online (Sandbox Code Playgroud)

c++ python opencv numpy image-processing

7
推荐指数
1
解决办法
2094
查看次数

标签 统计

c++ ×1

image-processing ×1

numpy ×1

opencv ×1

python ×1