【发布时间】:2019-07-09 15:30:02
【问题描述】:
我有 cv::Mat Mat_A 和 cv::Mat Mat_B 都是 (800000 X 512) 浮点数
下面的代码看起来很慢。
int rows = Mat_B.rows;
cv::Mat Mat_A = cv::repeat(img, rows, 1, Mat_A);
Mat_A = Mat_A - Mat_B
cv::pow(Mat_A,2,Mat_A)
cv::reduce(Mat_A, Mat_A, 1, CV_REDUCE_SUM);
cv::minMaxLoc(Mat_A, &dis, 0, &point, 0);
如何在 std::vector 中做到这一点?
我认为它应该更快。
在我的 2.4 Ghz mabook pro 中需要 4 秒?很慢。
【问题讨论】:
-
那是一堆花车!您正在尝试使用 3GB 的数据,然后您正在对其进行操作,我不确定您是否可以更快地做到这一点。为什么你认为 std::vector 会更快?
-
Mat_A 和 MAT_B 正如您看到的非常巨大的 Mat 对象和 - 来自。在 Numpy (python) 中执行相同操作时: (np.square(compare_desc - people_descs[x])) 它比上面带有 MAT 对象的 C++ 代码更快(1,9 秒)
-
具体是怎么编译的?
标签: c++ opencv c++11 stdvector mat