0

私はC ++の初心者で、これを行う最善の方法を理解するのに苦労しています。

クラスを実装しました。これを imageContainer と呼びましょう。このクラスには、画像のプライベート ベクトルと、このベクトルを画像で埋めるメソッドがあります。ここで、プライベート imageContainer を持つ別のクラスがあり、この imageContainer を正しく初期化した後 (含める画像を読み取った後)、その画像を処理する必要があるとします。私の処理は基本画像を変更せず、それらを使用していくつかのものを計算するだけであることに注意してください。それらの画像をコピーせずに取得するための、最善かつ最も安全な方法は何でしょうか? 大きな画像が多数あると、コピーのプロセスがかなり遅くなる可能性があるため、それらをコピーすることは避けたいと思います。

ああ、私が読んでいる画像はすべてopenCVのMatタイプです。Mat の "=" 演算子は Mat のコピーを作成せず、データを共有するだけなので、画像を取得する最良の方法は次のようになると思います。

Mat imageContainer::getImage(size_t index)
{
    return vectorOfImages[index];
}

しかし、私はそれについてよくわかりません。

前もって感謝します!

4

1 に答える 1

4

参照を返してコピーを回避し、それを const にして変更を禁止します。

const Mat& imageContainer::getImage(size_t index) const
{
  return vectorOfImages[index];
}
于 2012-08-25T19:58:35.673 に答える