首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将C# WritableBitmap转换为EmguCV/OpenCV Mat?

如何将C# WritableBitmap转换为EmguCV/OpenCV Mat?
EN

Stack Overflow用户
提问于 2017-01-19 06:46:02
回答 1查看 854关注 0票数 1

我有一个WritableBitmap,我想把它转换成EmguCV/OpenCV Mat。我该怎么做?我尝试过几种在线代码的链式解决方案(WritableBitmap -> Bitmap -> Map),但没有发现任何有效的解决方案。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-31 21:51:25

我发现这个效果很好:

代码语言:javascript
复制
    public static Mat ToMat(BitmapSource source)
    {
        if (source.Format == PixelFormats.Bgra32)
        {
            Mat result = new Mat();
            result.Create(source.PixelHeight, source.PixelWidth, DepthType.Cv8U, 4);
            source.CopyPixels(Int32Rect.Empty, result.DataPointer, result.Step * result.Rows, result.Step);
            return result;
        }
        else if (source.Format == PixelFormats.Bgr24)
        {
            Mat result = new Mat();
            result.Create(source.PixelHeight, source.PixelWidth, DepthType.Cv8U, 3);
            source.CopyPixels(Int32Rect.Empty, result.DataPointer, result.Step * result.Rows, result.Step);
            return result;
        }
        else if (source.Format == PixelFormats.Pbgra32)
        {
            Mat result = new Mat();
            result.Create(source.PixelHeight, source.PixelWidth, DepthType.Cv8U, 4);
            source.CopyPixels(Int32Rect.Empty, result.DataPointer, result.Step * result.Rows, result.Step);
            return result;
        }
        else
        {
            throw new Exception(String.Format("Conversion from BitmapSource of format {0} is not supported.", source.Format));
        }
    }

道格

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41735425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档