编辑
2025-02-03
OpenCvSharp 入门
00
请注意,本文编写于 92 天前,最后修改于 92 天前,其中某些信息可能已经过时。

目录

前提条件
保存图像文件
Cv2.ImWrite
文件格式
保存图像的质量
保存为 JPG 并设置质量
保存为 PNG 并设置压缩级别
完整示例
总结

OpenCvSharp 是 OpenCV 在 .NET 环境中的封装,它不仅可以读取和显示图像,还可以将处理后的图像保存为文件。本文将详细介绍如何使用 OpenCvSharp 保存图像文件,并展示一些常见的保存图像示例。

前提条件

在开始之前,请确保你的开发环境已经配置好,并且项目中已经安装了 OpenCvSharp。可以通过 NuGet 包管理器安装:

Bash
Install-Package OpenCvSharp4 Install-Package OpenCvSharp4.runtime.win

保存图像文件

为了将图像保存为文件,OpenCvSharp 提供了 Cv2.ImWrite 方法。下面是一个简单的示例,演示了如何读取、处理和保存图像文件:

C#
using System; using OpenCvSharp; namespace OpenCvSharpExample { class Program { static void Main(string[] args) { // 读取图像 Mat src = Cv2.ImRead("example.jpg", ImreadModes.Color); if (src.Empty()) { Console.WriteLine("无法读取图像!"); return; } // 转换为灰度图像 Mat grayImage = new Mat(); Cv2.CvtColor(src, grayImage, ColorConversionCodes.BGR2GRAY); // 保存图像 bool isSaved = Cv2.ImWrite("gray_example.jpg", grayImage); if (isSaved) { Console.WriteLine("图像保存成功!"); } else { Console.WriteLine("图像保存失败!"); } // 释放资源 src.Dispose(); grayImage.Dispose(); } } }

Cv2.ImWrite

Cv2.ImWrite 方法用于将图像保存到文件。它接受两个参数:文件路径和要保存的图像对象(Mat 类型)。

C#
Cv2.ImWrite("文件路径", 图像对象);

文件格式

Cv2.ImWrite 支持多种图像文件格式,包括但不限于:

  • JPG 或 JPEG .jpg.jpeg
  • PNG .png
  • BMP .bmp
  • TIFF .tiff.tif

示例:

C#
Cv2.ImWrite("output.jpg", image); // 保存为 JPG Cv2.ImWrite("output.png", image); // 保存为 PNG Cv2.ImWrite("output.bmp", image); // 保存为 BMP Cv2.ImWrite("output.tiff", image); // 保存为 TIFF

保存图像的质量

对于某些图像格式(如 JPG 和 PNG),我们可以指定保存的图像质量。质量参数通过额外的第三个参数 ImwriteFlags 来传递。

保存为 JPG 并设置质量

质量可以在 0 到 100 之间设置,值越高质量越好,文件也越大。默认质量是 95。

C#
// 设置 JPG 质量为 90 Cv2.ImWrite("output.jpg", image, new ImageEncodingParam(ImwriteFlags.JpegQuality, 90));

保存为 PNG 并设置压缩级别

压缩级别可以在 0 到 9 之间设置,值越高压缩率越大,但速度越慢。默认压缩级别是 3。

C#
// 设置 PNG 压缩级别为 9 Cv2.ImWrite("output.png", image, new ImageEncodingParam(ImwriteFlags.PngCompression, 9));

完整示例

以下是一个更完整的示例,演示了读取图像、处理图像、显示图像并以不同文件格式和设置保存图像:

C#
using System; using OpenCvSharp; namespace OpenCvSharpExample { class Program { static void Main(string[] args) { // 读取图像 Mat src = Cv2.ImRead("example.jpg", ImreadModes.Color); if (src.Empty()) { Console.WriteLine("无法读取图像!"); return; } // 转换为灰度图像 Mat grayImage = new Mat(); Cv2.CvtColor(src, grayImage, ColorConversionCodes.BGR2GRAY); // 显示图像 Cv2.ImShow("原图像", src); Cv2.ImShow("灰度图像", grayImage); Cv2.WaitKey(0); // 保存原图像和灰度图像 Cv2.ImWrite("output.jpg", src); // 保存为 JPG Cv2.ImWrite("output_gray.png", grayImage); // 保存为 PNG // 设置 JPG 质量为 90 Cv2.ImWrite("output_quality90.jpg", src, new ImageEncodingParam(ImwriteFlags.JpegQuality, 90)); // 设置 PNG 压缩级别为 9 Cv2.ImWrite("output_compression9.png", grayImage, new ImageEncodingParam(ImwriteFlags.PngCompression, 9)); Console.WriteLine("图像保存成功!"); // 释放资源 src.Dispose(); grayImage.Dispose(); Cv2.DestroyAllWindows(); } } }

在这个示例中,我们完成以下操作:

  1. 读取图像文件。
  2. 将彩色图像转换为灰度图像。
  3. 显示原图像和灰度图像。
  4. 使用不同的文件格式和参数保存图像。

总结

通过使用 OpenCvSharp 的 Cv2.ImWrite 方法,我们可以轻松地将处理后的图像保存到各种格式的文件中,并调整图像的保存质量和压缩级别。在本文中,我们详细介绍了如何保存图像文件,并提供了多个示例以展示不同的文件格式和保存参数。希望这些内容对你有所帮助,让你能够在 .NET 环境中高效地进行图像保存操作。

本文作者:rick

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!