如何使用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?
我有一张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]);
相关文章:
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 如何使用OpenCV将RBG图像转换为HSV,并将H、S和V值保存为C++中的3个独立图像
- OpenCV EqualizeHist()从彩色图像创建黑白图像
- 将"打开的CV图像"中的"颜色"转换为整数格式
- 独立读取-修改-写入顺序
- 平均图像时图像损坏
- 在C++中使用GDAL可以将图像的像素坐标转换为lat,long吗
- 如何将图像传输到c++(dll)中的缓冲区,然后在c#的缓冲区中读/写
- Vulkan验证层不断在VkQueuePresentKHR()上抛出图像布局错误
- 使用FFMPEG将RGB图像序列保存到.mp4时出现问题
- 将RGB图像保存为PPM格式
- 将图像添加到资源文件夹UWP C++
- 彩色图像的卤化物处理平均值
- 带有多个独立参数的C++For循环
- C++射线示踪剂ppm表示没有足够的数据来显示图像
- 重新定位图像时如何前进到下一个内存块
- 如何使用按钮更新GTK3图像以使用C++从相机捕获图片
- 为什么 BMP 图像上的 imwrite 会卡住/不返回?
- Gstreamer:每 5 秒使用多文件墨水保存图像/jpeg
- 编写图像到视频文件独立安装编解码器