A certain engineer "COMPLEX"

開発メモ その43 OpenCvSharp.MatからROIを指定してRawを抜き出す

Problem


掲題の件、普通は下記のような形でRAWデータ (ここでは、画素値だけを格納したデータ形式)だけを抜き出す。

問題は、あるMatからROIを指定した後に、ROIで抽出されたMatをRAWデータを抜き出す場合。
つまり下記のようなケース。

上記のケースで抜き出されるRAWデータは壊れているようなデータになる。

ROIを指定した場合、抜き出されたMatは、元のMatのデータ領域を指し示しているだけで、コピーでは無い。
そのため、抜き出されたMatのDataプロパティからポインタを介してメモリ領域から連続したデータを抜き出しても意味が無い。

Solution


回答は下記。

OpenCvSharp.Mat.CopyToメソッドを利用して、ROIで切り出したMatを新しく確保したMatにコピーしています。
これで意図した結果になります。

コメントを残す

メールアドレスが公開されることはありません。

%d人のブロガーが「いいね」をつけました。