RGB 转 HSV

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>
int main()
{
	// 图像源读取及判断
    cv::Mat srcImage = cv::imread("22.jpg");
	if (!srcImage.data)   
       return -1;
    cv::imshow("srcImage", srcImage);
    cv::Mat image_hsv, image_H, image_S, image_V, image_col;
    // HSV颜色空间转换
    cv::cvtColor(srcImage, image_hsv, CV_BGR2HSV);
    cv::imshow("image_hsv", image_hsv);
    // YCrCb颜色空间转换
	cv::cvtColor(srcImage, image_col,  CV_BGR2YCrCb);
	cv::imshow("image_YCrCb", image_col);
	// HLS颜色空间转换
	cv::cvtColor(srcImage, image_col, CV_BGR2HLS);
	cv::imshow("image_HLS", image_hsv);
	// Lab颜色空间转换
	cv::cvtColor(srcImage, image_col, CV_BGR2Lab);
	cv::imshow("image_Lab", image_col);    
    // 分离HSV各个通道
    std::vector<cv::Mat> hsvChannels; 
    cv::split(image_hsv,hsvChannels);
    // 0通道为H分量,1通道为S分量,2通道为V分量
    image_H = hsvChannels[0];
    image_S = hsvChannels[1];
    image_V = hsvChannels[2];
    // 分别显示各通道图像
    cv::imshow("image_H", image_H);
    cv::imshow("image_S", image_S);
    cv::imshow("image_V", image_V);
    cv::waitKey(0);
	return 0;
}
转载:http://blog.youkuaiyun.com/zhuwei1988


RGB颜色模式换为HSV颜色模式有数学原理及不同编程语言的实现方法。 在数学原理方面,是RGBHSV换的基础内容,虽然未给出具体原理内容,但可知其是换的理论依据 [^1]。 在实现代码方面,有不同语言的示例: - **C语言实现**: ```c void RGB2HSV( uint16_t * h, uint16_t * s, uint16_t * v, uint8_t r, uint8_t g, uint8_t b) { double rr, gg, bb; double hh, ss, vv; double cmax, cmin, cdes; // 后续还应有具体的换计算代码 } ``` 此代码定义了一个名为`RGB2HSV`的函数,用于将RGB颜色值换为HSV颜色值,函数接收RGB颜色分量作为输入,通过指针输出HSV颜色分量 [^2]。 - **MATLAB实现**:可利用内置函数`rgb2hsv`来实现RGBHSV换,同时还可在MATLAB中读取和显示图像,并在实际项目中应用颜色空间换 [^1]。示例代码如下: ```matlab % 读取图像 image = imread('your_image.jpg'); % 换为HSV颜色空间 hsv_image = rgb2hsv(image); % 显示HSV图像 imshow(hsv_image); ``` - **Java实现**: ```java package com.example.GLR; public class GLR { public static void GLRsingle(String imgPath, double sf){ double proportion = RGB2HLS.GetRGB(imgPath,sf); System.out.println("The green visual rate is:"+proportion*100+"%"); } public static void main(String[] args) { GLRsingle("C:\\Users\\Obama\\IdeaProjects\\demo\\src\\main\\java\\com\\example\\GLR\\inputImg\\greenTest1.png",0.2); } } ``` 此Java代码虽未完整展示RGBHSV的核心逻辑,但表明了在Java中进行RGB、HLS、HSV三种模式换的相关操作 [^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值