2

EmguImage<Bgr, Byte> frameをメモリ ストリームに JPEG として保存するにはどうすればよいですか?

4

3 に答える 3

5

2 つのオプションがあります。最初はネイティブ EMGU images.save("filename"); です。ただし、品質は高くなく、損失があります。最良の方法は、次の c# メソッドを使用することです。

この関数は saveJpeg(SaveFile.FileName, img.ToBitmap(), 100); です。メソッド saveJpeg(string path, Bitmap img, long quality) に基づきます。

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

お役に立てれば、

乾杯、

クリス

于 2012-04-17T06:04:34.263 に答える
3

高品質で高速な最も速くて汚い方法は次のとおりです。

C#

yourImage.toBitmap().Save("filename.png");

VB

YourImage.ToBitmap().Save("filename.png")
于 2012-05-22T05:43:07.377 に答える