编辑
2025-09-26
C#
00

目录

摘要
正文
nuget 安装库

摘要

在 C# 中使用 OpenCvSharp 进行颜色转换,主要是通过两个函数:cvtColor 和 bgr2Lab 实现的。其中,cvtColor 函数可以将图像从一个颜色空间转换到另一个颜色空间,例如将图像从 RGB 转换为灰度图像。而 bgr2Lab 函数则可以将 BGR 格式的图像转换为 LAB 格式的图像,其中 LAB 是一种常用的颜色空间。

此外,OpenCvSharp 还提供了一些通道分离和合并的函数。例如,cvtColor 函数还可以实现对图像通道的分离,使得我们可以对每个通道进行单独的处理。同时,我们也可以使用 merge 函数将多个通道的图像合并为一个。

除此之外,OpenCvSharp 还提供了其他的颜色转换函数,例如 Lab2BGR 和 Hsv2Bgr 等,可以帮助我们实现更多的颜色空间转换和处理。

正文

nuget 安装库

OpenCVSharp 库

OpenCvSharp4.runtime.win 库

OpenCvSharp.Extensions 库

在 WinForms 窗体中,创建七个 PictureBox 控件,分别用于显示原始图像、灰度图像、HSV 图像、合并通道图像以及分离的三个通道图像。在 Load 方法中调用 LoadConvertImage 方法加载图像并进行颜色转换,然后将结果显示在各个 PictureBox 控件中。

image.png

  1. 将图像转换为灰度图像。
  2. 将图像转换为 HSV 色彩空间。
  3. 将图像的三个通道合并为一个灰度通道图像。
  4. 将图像的三个通道分离并显示每个通道的图像。
C#
private void Form3_Load(object sender, EventArgs e) { LoadConvertImage(); } private void LoadConvertImage() { Mat sourceImage = Cv2.ImRead("./C#logo.jpg", ImreadModes.Color); if (sourceImage.Empty()) { MessageBox.Show("载入图片出错"); return; } Mat grayscaleImage = new Mat(); Cv2.CvtColor(sourceImage, grayscaleImage, ColorConversionCodes.BGR2GRAY); Mat hsvImage = new Mat(); Cv2.CvtColor(sourceImage, hsvImage, ColorConversionCodes.BGR2HSV); Mat mergedChannels = new Mat(); Cv2.Merge(new[] { grayscaleImage, grayscaleImage, grayscaleImage }, mergedChannels); Mat splitChannels = new Mat(); Cv2.Split(sourceImage, out Mat[] channels); pictureBox1.Image = BitmapConverter.ToBitmap(sourceImage); pictureBox2.Image = BitmapConverter.ToBitmap(grayscaleImage); pictureBox3.Image = BitmapConverter.ToBitmap(hsvImage); pictureBox4.Image = BitmapConverter.ToBitmap(mergedChannels); pictureBox5.Image = BitmapConverter.ToBitmap(channels[0]); pictureBox6.Image = BitmapConverter.ToBitmap(channels[1]); pictureBox7.Image = BitmapConverter.ToBitmap(channels[2]); }

本文作者:技术老小子

本文链接:

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