Как преобразовать изображение RBG в HSV и сохранить значения H, S и V в 3 отдельных изображения в C ++ с помощью OpenCV? - PullRequest
0 голосов
/ 04 ноября 2018

У меня есть картинка 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);

1 Ответ

0 голосов
/ 04 ноября 2018

Вам необходимо использовать 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]);
...