如何使用Java OpenCV库更改图像的颜色空间?


使用颜色空间协议,您可以表示图像中的颜色。OpenCV 中有几种可用的颜色空间,其中一些是 -

  • BGR - RGB 是最广泛使用的颜色空间,其中每个像素实际上是由三种不同的颜色(强度)值形成的:红色、蓝色和绿色,它是 OpenCV 中的默认颜色空间,但它存储为 BGR。

  • HSV - 在 HSV 颜色空间中,不同的颜色是通过改变色调、饱和度和亮度形成的。

  • CMK - 这是一种减色颜色空间,在这种颜色空间中,不同的颜色是通过从白色开始减去青色、品红色和黄色值形成的。

  • Y’UV - Y’UV 根据一个亮度(Y’)和两个色度(UV)分量定义颜色空间。Y’UV 颜色模型用于以下复合彩色视频标准。

您可以使用org.opencv.imgproc.Imgproc类的cvtColor()方法将图像的表示形式从一个颜色空间转换为另一个颜色空间。此方法接受源图像、目标图像以及表示目标图像颜色的代码。

要将颜色空间从 BGR 更改为 HSV,您需要将COLOR_BGR2HSV作为颜色代码值传递。类似地,要将颜色空间从 BGR 更改为 YUV,您需要将COLOR_BGR2YUV作为颜色代码传递。

示例

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
public class ChangingColorSpaces {
   public static void main(String args[]) throws Exception {
      //Loading the OpenCV core library
      System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
      //Reading the image
      Mat src = Imgcodecs.imread("D:\images\elephant.jpg");
      //Creating the empty destination matrix
      Mat dst = new Mat();
      //Converting From BGR to Gray
      Imgproc.cvtColor(src, dst, Imgproc.COLOR_BGR2GRAY);
      HighGui.imshow("BGR to Gray", dst);
      dst = new Mat();
      //Converting From BGR to HSV
      Imgproc.cvtColor(src, dst, Imgproc.COLOR_BGR2HSV);
      HighGui.imshow("BGR to HSV", dst);
      dst = new Mat();
      //Converting From BGR to HSV
      Imgproc.cvtColor(src, dst, Imgproc.COLOR_RGB2YUV);
      HighGui.imshow("BGR to YUV", dst);
      HighGui.waitKey();
   }
}

输入图像

输出

执行上述程序后,会生成以下窗口 -

BGR 到灰度 -

BGR 到 HSV -

BGR 到 YUV -

更新于: 2020年4月10日

629 次浏览

启动您的 职业生涯

通过完成课程获得认证

开始
广告