私はOpenCVについて次の質問をしています。私はいつもOpenCVのメモリ管理が多かれ少なかれ奇妙であることを知っています。したがって、次の操作が安全であるかどうかは分かりません(指差しポインタ、メモリリークなどは発生しません)。OpenCV:同じMatオブジェクトをソースセーフとデスティネーションセーフの両方として使用していますか?
私はMatオブジェクトを持っていて、イメージを格納しています。サイズを変更するには、OpenCV関数を使ってサイズを変更します。
私は次のように機能を使用したい:
resize(image,image,Size(),paramStruct.upScaleRatio,paramStruct.upScaleRatio, INTER_LANCZOS4);
私も宛先としてソースオブジェクトを使用しています。この場合、OpenCVの正確な動作は、イメージオブジェクトの古いデータをサイズ変更した後に安全に解放します(ほとんどの場合、一時オブジェクトになる可能性があります)。あるいは、私はいつもソースとは異なる新しいMatオブジェクトを使うべきですか? (コードを複雑にするので、できるだけそれを好むわけではありません)
いいえ毎回新しいMatオブジェクトを作成する必要はありません。この実装は安全です。 – ZdaR
安全ですが、割り当てを解除して新しいメモリをより頻繁に割り当てる可能性があるため、パフォーマンスは低下する可能性があります。 – Micka