gpt4 book ai didi

c++ - 从 OpenCV 中的 Matrix 访问值

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:55:16 26 4
gpt4 key购买 nike

例如,我有一个大小为 10x10 的矩阵 M 和一个长度为 5 的列矩阵 ind
我如何使用 OpenCV 在 C++ 中将 A(ind,:) 分配给新矩阵 B?

下面是我在 Matlab 中的做法:

A = [ 41     8    33    36    22    14    38    43    18     4
46 49 2 2 20 34 13 13 42 3
7 48 43 14 39 33 26 41 30 27
46 25 47 3 40 9 35 13 28 39
32 41 34 5 10 6 45 47 46 47
5 8 38 42 25 25 48 18 15 7
14 22 38 35 23 48 28 10 38 29
28 46 20 16 33 18 7 13 38 24
48 40 33 48 36 30 8 31 20 1
49 48 9 2 38 12 13 24 29 17]

ind = [2; 8; 4; 6; 2]

B = A(ind, :);

B = [ 46 49 2 2 20 34 13 13 42 3
28 46 20 16 33 18 7 13 38 24
46 25 47 3 40 9 35 13 28 39
5 8 38 42 25 25 48 18 15 7
46 49 2 2 20 34 13 13 42 3]

谁能告诉我如何在不使用 for 循环的情况下使用 OpenCV 在 C++ 中执行此操作

最佳答案

没有以某种方式迭代的直接方法来提取行/列的随机排序。最简单的方法是提取行,然后将它们逐行插入目标矩阵。假设您已声明矩阵 A 及其数据集:

cv::Mat B;
B.push_back(A(cv::Range(2,3),cv::Range::all()));
B.push_back(A(cv::Range(8,9),cv::Range::all()));
B.push_back(A(cv::Range(4,5),cv::Range::all()));
B.push_back(A(cv::Range(6,7),cv::Range::all()));
B.push_back(A(cv::Range(2,3),cv::Range::all()));

应该做你想做的。这使用重载的 operator()(cv::rowRange, cv::colRange) 来提取选定的行。

关于c++ - 从 OpenCV 中的 Matrix 访问值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14835071/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com