繁体   English   中英

将WriteableBitmap转换为Bitmap以在EmguCV中使用

[英]Converting WriteableBitmap to Bitmap for use in EmguCV

在我的代码中,我从字节数组(依次从Kinect)接收WriteableBitmaps,我想把它们变成用于EmguCV的位图。 目前这是我的代码:

                // Copy the pixel data from the image to a temporary array
                colorFrame.CopyPixelDataTo(this.colorPixels);

                // Write the pixel data into our bitmap
                this.colorBitmap.WritePixels(
                    new Int32Rect(0, 0, this.colorBitmap.PixelWidth, this.colorBitmap.PixelHeight),
                    this.colorPixels,
                    this.colorBitmap.PixelWidth * colorFrame.BytesPerPixel,
                    0);

                    BitmapEncoder encoder = new BmpBitmapEncoder();
                    encoder.Frames.Add(BitmapFrame.Create(colorBitmap));
                    MemoryStream ms = new MemoryStream();

                    encoder.Save(ms);
                    Bitmap b=new Bitmap(ms);

                    Image<Gray, Byte> img = new Image<Gray, Byte>(b);
                    img = img.ThresholdBinary(new Gray(200), new Gray(255));

我从这里得到了代码的下半部分。代码编译和所有内容,但是在我尝试运行程序时挂起(它应该对图像执行一些操作然后将其转换回可以呈现的格式作为一个图像。)暂停我的代码,然后在VS 2013中使用IntelliTrace,我在Image<Gray, Byte> img = new Image<Gray, Byte>(b); “抛出了System.ArgumentException:不支持URI格式。” 使用替代代码,从我直接从字节到位图的位置给出了同样的错误。 代码可以在这里找到。

任何人都有关于如何解决此错误或其他方法转换为位图的提示? 我是C#和EmguCV的新手,我非常感激。

结果证明所有代码都没问题。 我对错误的技术细节不太确定,但是当尝试在WriteableBitmap中编写Gray16图像时会收到错误(将被转换为Emgu图像。)支持Bgr565或其他格式,我相信Gray没有完全实现Gray16。 如果执行WinForms应用程序,Format16bppGray也会给出相同的错误。

我决定使用Grey Emgu图像,同时将Bitmap写为Bgr555,这是一个更嘈杂,但总比没有好。

我遇到过同样的问题。 “不支持URI格式”的例外与位图无关,但需要加载opencv dll。 我刚刚将x86和x64文件夹(包括opencv_core290.dll和其他文件夹)复制到我的可执行文件目录中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM