Kinect V2カメラから赤外線フレームを取得しています。フレームはWritableBitmapの形で来るので、私は私が作ったこのコードでそれを変換しよう:WriteableBitmapからMatに変換して、CvInvoke.Imshowでウィンドウに表示しますか?
public Mat WritableBitmapToMat(WriteableBitmap writeBmp)
{
Bitmap bmp;
using (MemoryStream outStream = new MemoryStream())
{
BitmapEncoder enc = new BmpBitmapEncoder();
enc.Frames.Add(BitmapFrame.Create((BitmapSource)writeBmp));
enc.Save(outStream);
bmp = new Bitmap(outStream);
}
Rectangle rect = new Rectangle(0, 0, bmp.Width, bmp.Height);
BitmapData bmpData = bmp.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadWrite, bmp.PixelFormat);
IntPtr data = bmpData.Scan0;
int step = bmpData.Stride;
Mat mat = new Mat(bmp.Height, bmp.Width, Emgu.CV.CvEnum.DepthType.Cv32F, 4, data, step);
bmp.UnlockBits(bmpData);
return mat;
}
それは、変換に問題だ場合、私は知りませんが、私は、画像を表示しようとすると、このコードのウィンドウに:
例外:
CvInvoke.Imshow("window showing a picture", infraredMat);
私はこのようになります例外を取得し終わる例外がスローさ:Emgu.CV.World.dllの「System.AccessViolationExceptionは」( "しようとしました保護されたメモリを読み書きすることができます。これは、多くの場合、他のメモリがc )。
はまた、私は私が得るすべての助けを事前にEmguCV 3.1とのKinect SDK 2.0
感謝を使用しています言及したいと思います。
安全でないコード/メソッドを使用しましたか?メモリビットに直接アクセスしているため、問題がある可能性があります。 –
「安全でないコードを許可する」というチェックボックスがチェックされています。私のメソッドの安全でない情報を追加する必要がありますか? – lolistic
私のメソッドの安全でないinfrontを追加しようとしました。悲しいことに、働かなかった。 – lolistic