gpt4 book ai didi

c# - EmguCV - 保存图像时如何指定 jpeg 质量?

转载 作者:太空狗 更新时间:2023-10-29 22:20:11 24 4
gpt4 key购买 nike

我使用以下 C# 保存 jpeg 图像 EmguCV代码:

Emgu.CV.Image<Gray, byte> image
...
image.Save("imageName.jpg");

但是图像以极低的质量存储(每 8x8 像素 1 个颜色方 block )。

当我保存 bmp 时一切正常:

Emgu.CV.Image<Gray, byte> image
...
image.Save("imageName.bmp");

如何在使用 Emgu.Cv.Image.Save 时提高 jpeg 质量,或者我应该调用其他函数?为什么默认质量这么低?

试图在 EmguCV forum 上询问, 但无法访问。

最佳答案

EMGU 只有 image.Save(filename) 因此您必须使用 .Net 方法来保存图像。此代码源自 here .我将代码分开以便于此代码打开一个文件然后尝试保存它。这是您对 saveJpeg(SaveFile.FileName, img.ToBitmap(), 100); 感兴趣的函数。基于函数 saveJpeg(string path, Bitmap img, long quality)。

open.Filter = "Image Files (*.tif; *.dcm; *.jpg; *.jpeg; *.bmp)|*.tif; *.dcm; *.jpg; *.jpeg; *.bmp";
if (open.ShowDialog() == DialogResult.OK)
{
Image<Bgr, Byte> img = new Image<Bgr, Byte>(open.FileName);
SaveFileDialog SaveFile = new SaveFileDialog();
if (SaveFile.ShowDialog() == DialogResult.OK)
{
saveJpeg(SaveFile.FileName, img.ToBitmap(), 100);
}
}

现在要从下面获取该函数的代码,您可以将其复制并粘贴到您的项目中,不要忘记代码顶部的 using 语句。

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;
}

这是 EMGU 的最佳方法,如果您遇到困难请告诉我。

希望对您有所帮助,

克里斯

关于c# - EmguCV - 保存图像时如何指定 jpeg 质量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7914243/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com