You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中Emgu.CV的Mat帧转Bitmap失败,求正确转换方法

解决Emgu.CV中Mat转Bitmap的问题

你遇到的问题是因为Emgu.CV 4.x及以上版本移除了Mat类直接的ToBitmap()方法和Bitmap属性,需要通过专门的转换工具类来处理,具体解决步骤如下:

1. 确保安装正确的NuGet包

除了Emgu.CV,还需要安装配套的Emgu.CV.Bitmap包(版本必须和Emgu.CV完全一致,避免版本兼容问题)。

2. 引入必要的命名空间

添加Emgu.CV.Bitmap命名空间,这个命名空间包含了Mat转Bitmap的扩展方法:

using Emgu.CV;
using Emgu.CV.Bitmap; // 关键:这个命名空间不能少
using Emgu.CV.Structure;

3. 正确执行转换

现在可以直接调用ToBitmap()扩展方法,或者显式使用BitmapConverter类:

VideoCapture videoCapture = new VideoCapture("video.mp4");
Mat frame = new Mat();

if (videoCapture.Read(frame))
{
    // 方法1:使用扩展方法
    Bitmap bitmapFrame = frame.ToBitmap();

    // 方法2:显式调用BitmapConverter
    // Bitmap bitmapFrame = BitmapConverter.ToBitmap(frame);
    
    // 后续处理Bitmap...
}

4. 处理颜色反转问题

如果转换后的Bitmap颜色出现反转(比如蓝色变红色),是因为Emgu.CV默认的Mat格式是BGR,而Bitmap使用的是RGB,需要先转换颜色空间:

if (videoCapture.Read(frame))
{
    Mat rgbFrame = new Mat();
    // 将BGR格式转为RGB
    CvInvoke.CvtColor(frame, rgbFrame, ColorConversion.Bgr2Rgb);
    Bitmap bitmapFrame = rgbFrame.ToBitmap();
    // ...
}

内容的提问来源于stack exchange,提问作者Frost Dream

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 06:47:18