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

时间:2018-11-03 22:16:27

标签: c++ image opencv rgb hsv

我有一张要转换为HSV的RBG图片。我想将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);

1 个答案:

答案 0 :(得分:2)

从BGR转换为HSV时,您需要使用COLOR_BGR2HSV而不是COLORMAP_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]);
相关问题