arrays - 从 opencv::Mat 中删除选定的行?

标签 arrays opencv vector mat

出于某些原因,我需要过滤掉 Mat 的行。 (我需要过滤掉一些ORB的描述符)

您建议我使用哪种方式?我还没有找到任何方法来从 Mat 中删除一行。 所以我在想我可以迭代地将好的行插入到一个新的 Mat 中。

C++ 伪代码(删除):

Mat desc;
ORB(myImage,cv::noArray,kp,desc);
matcher->match( myPreviousDesc, desc, matches );

for(auto i=0;i<matches.size();i++) {
   if (some conditions) {
      Remove the ith row of desc:
      erase( desc.row( matches[i].queryIdx ) ); // pseudo
   }
}

在检查某些条件(或仅在新垫中添加选定的行)后,如何从垫中删除一行?

或者如何向新 Mat 迭代添加新行?

最佳答案

使用 cv::Mat::push_back() 迭代添加新行很简单.

只添加好的描述符可能看起来像这样:

cv::Mat good_descriptors;   
for (auto i = 0; i < matches.size(); ++i)
{
    if (/*something*/)
    {
        cv::Mat row = desc.row(matches[i].queryIdx);
        good_descriptors.push_back(row);
    }
}

关于arrays - 从 opencv::Mat 中删除选定的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16739286/

相关文章:

java - 大小在哪里获得它的值(value)(Java)

linux - Bash- 将文件解析为数组

php - array_key_exists 不工作

python - 非平面钻机的 OpenCV 相机标定

c++ - C++ 如何从子类向父类(super class)添加方法

Javascript 从对象表调用函数

ios - 在 iOS 中通过 opencv 或 opengl 拉伸(stretch)图像区域

python - 使用OpenCV自动调整图像的亮度

algorithm - 欧几里德距离与 PIL 逊相关性与余弦相似性?

c++ - 指针有问题?