【发布时间】:2016-12-14 18:15:36
【问题描述】:
我需要根据一个简单的规则(如果值介于 2 个值之间)分割图像。我只使用 STL 容器(我没有使用 opencv 或其他库,因为我想在自学 C++ 的同时保持它不受依赖)
我已将图像存储为vector< vector<double> >。我的蛮力方法是使用 2 个迭代器遍历我的图像并检查每个值,并可能将满足我条件的值的索引推送到另一个 vector<int>。我必须这样做,直到找到所有段。每次我想选择一个段时,我都会遍历存储的索引。
正确的做法是什么?
这可以一次性实现吗?
什么是适合此过程的 STL 容器?我试图 通过这个flowchart 弄清楚。我能想到的最好的 是
unordered_multimap。
【问题讨论】:
-
矢量非常适合图像,但通常使用
std::vector<double>效果更好,然后您的索引为vec[currColumn*numRows + currRow]。这样一来,您的图像就在一个连续的、缓存友好的内存中。 -
很高兴知道,我把它做成 2d 纯粹是为了可读性,没有别的,不知道性能影响。将切换到 1d。
-
这里的段是什么意思?
-
类似于opencv python example。每个硬币都是一个片段。