私は、ラムダ関数のカップルとstd::for_each()
のカップルについて
何OpenCVのを知らないので、シンプルなソリューションすることができますが...?あなたはauto
引数を持つC++ 14ので、ラムダ関数を使用できる場合
std::vector<std::vector<Point3f>> vvp { /* some data */ };
auto mx = vvp[0][0].x;
auto my = vvp[0][0].y;
auto mz = vvp[0][0].z;
std::for_each(vvp.cbegin(), vvp.cend(),
[&](std::vector<Point3f> const & vp)
{ std::for_each(vp.cbegin(), vp.cend(),
[&](Point3f const & p)
{ mx = std::max(mx, p.x);
my = std::max(my, p.y);
mz = std::max(mz, p.z); }); });
、ダブルstd::for_each()
一部は、単にので、他のポイント-3DでPoinf3f
と使用可能にexplicitingずに
std::for_each(vvp.cbegin(), vvp.cend(), [&](auto const & vp)
{ std::for_each(vp.cbegin(), vp.cend(), [&](auto const & p)
{ mx = std::max(mx, p.x);
my = std::max(my, p.y);
mz = std::max(mz, p.z); }); });
のように記述することができますタイプのようなタイプ。
ベクトルをMatに変換し、[this](http://docs.opencv.org/2.4/modules/core/)を使用してください。 doc/operations_on_arrays.html?highlight = minmaxloc#minmaxloc)を使用して、minとmaxを検索します。 –
@RickMありがとうございました。私は前にこれについて考えましたが、他の参考文献でPoint3fを使用しているので、私はMatに変換したくありません。私がそうするなら、私は必要な時にいつでもそれを逆行させなければならない。そしてそれはそれを少し遅くするでしょう。 –
[this](http://www.swarthmore.edu/NatSci/mzucker1/opencv-2.4.10-docs/doc/user_guide/ug_mat.html#memory-management)のようにすると、遅くなることはありません参照カウント)。これは単なるデータへのポインタです。 –