p_img1
とp_img2
IplImage*
以前cvLoad'ed、私はp_img1
がp_img2
のコピーになりたいされています。 *p_img1 = *p_img2;
を書くOpenCVの:なぜ* p_img1 = * p_img2が正しくない
が正常に動作するようです(私はだけでなく、画像を表示することで、デバッグモードでそれを確認することができます)、その行の後に点を除いて、1つのポインタにcvReleaseImage
を使用すると、明らかに他のものを破壊します。 2つのポインタ(2つのアドレス)が異なるので、構造体のフィールドのみがコピーされるので、私はそれを理解しません。
p_img1 = cvCloneImage(p_img2);
を使用すると問題が解決されています。
誰かがなぜ*p_img1 = *p_img2
が間違っているのか説明してください。 cvCloneImage()
はどういう意味がありますか?
あなたは本当に非推奨のC APIを使用してはいけません。特に、質問をC++としてタグ付けした場合は特にそうです。 – beaker
あなたはオブジェクトをコピーしますが、オブジェクトは、オブジェクトを破棄/解放するときに解放される可能性のある割り当てられたメモリへのメンバ変数ポインタを持っている可能性があります。これは、IplImageのような画像タイプの場合です。 cv :: Matには同じタスクの参照カウントがいくつかありますが、これは非常にうれしいです! – Micka