2017-01-31 11 views
1

私はOpenCVを独自のref-countedイメージクラスを持つレガシーコードベースと統合しています。私はcv :: Matからこれらのイメージを作成するためのコンストラクタを追加しています。最適化として、私はcv :: Matのrefcountingメカニズム&を利用して、データを所有しているときに浅いコピーを作成したいと思います。しかし、外部データを使用している場合は、詳細コピーを強制する必要があります。cv :: Matが内部データまたは外部データを使用しているかどうかを確認するにはどうすればよいですか?

問題は、ドキュメントを読むことから、cv :: Matがデータを所有しているかどうかを判断する方法がないことです。これは(OpenCVを変更せずに)行うことができますか?

ご参考までに、私はOpenCV 3.1を使用しています。

+0

cv :: Matのコンストラクタまたはデストラクタコード内部または外部のデータを保持していますか? – Micka

+0

私はmat.hpp、matrix.cpp、およびumatrix.cppを見て、その複雑さを理解するのに十分な時間をかけました。 –

+0

私が見逃したのはopencv2/core/mat.inl.hppでした。一部のインライン関数がおそらくどこかに隠れていると思った。 –

答えて

2

cv :: MatのメンバーUMatData * uを使用してください。 cv :: Matが外部データを使用する場合は0にする必要があります。そうでなければ、次のようにrefカウンタを取得できます。

img.u->refcount 
+0

私は午前中にこれを試し、正しい場合は賞を与えます。ありがとう。 –

+0

が確認されました。ありがとうございました。 –

関連する問題