如何使用OpenCV将RBG图像转换为HSV,并将H、S和V值保存为C++中的3个独立图像

How do I convert a RBG image to HSV and save the H, S, and V values into 3 separate images in C++ using OpenCV?

本文关键字:图像 独立 保存 中的 C++ 3个 并将 OpenCV 何使用 RBG 转换      更新时间:2023-10-16

我有一张RBG图片,我想将其转换为HSV。我想将H、S和V值保存到3个单独的图像中。我该怎么做?

我当前的代码只是将RGB图像转换为HSV:

#include "opencv2/imgproc.hpp"
#include "opencv2/imgcodecs.hpp"
#include "opencv2/highgui.hpp"
#include <iostream>
#include <unistd.h>
using namespace cv;
using namespace std;
Mat img_hsv, img_rgb;
img_rgb = imread("pic.png", 1);
cvtColor(img_rgb, img_hsv, COLORMAP_HSV);

您需要使用COLOR_BGR2HSV而不是COLORMAP_HSV,因为您正在从BGR转换为HSV(OpenCV默认使用BGR(。之后,您可以将图像分割为其通道:

std::vector<Mat> channels;
split(img_hsv, channels);

然后用你选择的名字一个接一个地保存它们:

imwrite("H.png", channels[0]);
imwrite("S.png", channels[1]);
imwrite("V.png", channels[2]);