如何在内存流中将Emgu Image<Bgr, Byte> frame保存为JPEG?

最佳答案

您有两个选择,第一个是本机EMGU images.save(“filename”);然而,该方法的质量不是很好并且有损。最好的方法是使用以下C#方法。

这个函数是saveJpeg(SaveFile.FileName,img.ToBitmap(),100);。基于saveJpeg方法(字符串路径,Bitmap img,长质量)。

using System.Drawing.Imaging;

private void saveJpeg(string path, Bitmap img, long quality)
{
    // Encoder parameter for image quality

    EncoderParameter qualityParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality);

    // Jpeg image codec
    ImageCodecInfo jpegCodec = this.getEncoderInfo("image/jpeg");

    if (jpegCodec == null)
    return;

    EncoderParameters encoderParams = new EncoderParameters(1);
    encoderParams.Param[0] = qualityParam;

    img.Save(path, jpegCodec, encoderParams);
}

private ImageCodecInfo getEncoderInfo(string mimeType)
{
    // Get image codecs for all image formats
    ImageCodecInfo[] codecs = ImageCodecInfo.GetImageEncoders();

    // Find the correct image codec
    for (int i = 0; i < codecs.Length; i++)
    if (codecs[i].MimeType == mimeType)
    return codecs[i];
    return null;
}

希望这可以帮助,

干杯,

克里斯

关于opencv - 如何将Emgu `Image<Bgr, Byte> frame`在内存流中另存为JPEG?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10175441/

10-09 01:36