资源简介
Photoshop 的色相/饱和度调整,可以对全图、红、黄、绿、青、蓝、洋红六个通道进行设置。每个通道可设置: 色相(hue), 饱和度(satuation), 明度(Lightness)三个调整值。
另包含 多个颜色空间转换函数

代码片段和文件信息
/*
* ColorSpace.cpp
*
* Created on: 2016年7月1日
* Author: Administrator
*/
#include “ColorSpace.hpp“
#include
using namespace std;
#define MAX2(a b) ( (a) > (b) ) ? (a) : (b)
#define MAX3(abc) ( ( (a) > (b) ) ? MAX2( a c) : MAX2( b c ) )
#define MIN2(a b) ( (a) < (b) ) ? (a) : (b)
#define MIN3(abc) ( ( (a) < (b) ) ? MIN2( a c ) : MIN2( b c ) )
#define SWAP(a b t) do { t = a; a = b; b = t; } while(0)
#define CLIP_RANGE(value min max) ( (value) > (max) ? (max) : (((value) < (min)) ? (min) : (value)) )
#define COLOR_RANGE(value) CLIP_RANGE(value 0 255)
namespace cv {
/**
* Convert BGR to Lab
*
* @param bgr [in] pointer to pixel data in Blue-Green-Red format each channel‘s value range [0 255]
* @param lab [out] pointer to pixel data in L-a-b format
* L value range [0 1]
* a value range [0 1]
* b value range [0 1]
*/
void BGR2Lab(const uchar *bgr float *lab)
//void rgb2lab( float R float G float B float & l_s float &a_s float &b_s )
{
float var_R = bgr[2] /255.0;
float var_G = bgr[1] /255.0;
float var_B = bgr[0] /255.0;
if ( var_R > 0.04045 ) var_R = pow( (( var_R + 0.055 ) / 1.055 ) 2.4 );
else var_R = var_R / 12.92;
if ( var_G > 0.04045 ) var_G = pow( ( ( var_G + 0.055 ) / 1.055 ) 2.4);
else var_G = var_G / 12.92;
if ( var_B > 0.04045 ) var_B = pow( ( ( var_B + 0.055 ) / 1.055 ) 2.4);
else var_B = var_B / 12.92;
var_R = var_R * 100.;
var_G = var_G * 100.;
var_B = var_B * 100.;
//Observer. = 2° Illuminant = D65
float X = var_R * 0.4124 + var_G * 0.3576 + var_B * 0.1805;
float Y = var_R * 0.2126 + var_G * 0.7152 + var_B * 0.0722;
float Z = var_R * 0.0193 + var_G * 0.1192 + var_B * 0.9505;
float var_X = X / 95.047 ; //ref_X = 95.047 Observer= 2° Illuminant= D65
float var_Y = Y / 100.000; //ref_Y = 100.000
float var_Z = Z / 108.883; //ref_Z = 108.883
if ( var_X > 0.008856 ) var_X = pow(var_X ( 1./3. ) );
else var_X = ( 7.787 * var_X ) + ( 16. / 116. );
if ( var_Y > 0.008856 ) var_Y = pow(var_Y ( 1./3. ));
else var_Y = ( 7.787 * var_Y ) + ( 16. / 116. );
if ( var_Z > 0.008856 ) var_Z = pow(var_Z ( 1./3. ));
else var_Z = ( 7.787 * var_Z ) + ( 16. / 116. );
lab[0] = ( 116. * var_Y ) - 16.;
lab[1] = 500. * ( var_X - var_Y );
lab[2] = 200. * ( var_Y - var_Z );
}
/**
* Convert Lab to BGR
*
* @param lab [in] pointer to pixel data in L-a-b format
* L value range [0 1]
* a value range [0 1]
* b value range [0 1]
* @param bgr [out] pointer to pixel data in Blue-Green-Red format each channel‘s value range [0 255]
*/
void Lab2BGR(const float *lab uchar *bgr)
//http://www.easyrgb.com/in
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 124965 2016-07-09 17:08 building.jpg
文件 15092 2016-07-04 03:39 ColorSpace.cpp
文件 6671 2016-07-03 23:26 ColorSpace.hpp
文件 5339 2016-07-05 00:00 HSL.cpp
文件 1218 2016-09-11 19:49 HSL.hpp
文件 1545 2016-09-11 19:56 demo_HSL.cpp
----------- --------- ---------- ----- ----
154830 6
相关资源
- 基于OpenCV的数字识别468815
- 使用opencv去掉二值化图像中黑色面积
- opencv环境配置
- win10 64位下编译的opencv4.5.5库,opencv
- NVIDIAOpticalFlowSDK-79c6cee80a2df9a196f20afd6
- opencv_contrib-3.4.0.zip
- opencv2.4.9源码分析——SIFT
- 用两个摄像头实现,双目标定,双目
- opencv_traincascade训练分类器,手势识别
- opencv3.0交叉编译用parallel.cpp
- 基于opencv的图像识别识别图像中的色
- 基于openCV的识别特定颜色区域
- 基于OpenCV的分水岭算法实现
- QT+opencv+OCR 身份证号码,银行卡号识别
- opencv视频特定颜色区域识别
- 把RGB转换为HSV和HSI然后根据黄色和蓝
- opencv视觉测距
- 基于Qt和opencv的身份证号码识别系统
- opencv_ffmpeg249.dll
- SfM稀疏三维点云重建--完整工程文件
- 基于opencv的数人头程序源代码
- 利用OpenCV中的Stitcher类实现全景图像拼
- opencv实现的sift算法源码,包含了图像
- openCV 上的小波变换
- 基于OPENCV的车牌识别系统设计
- 617张国内车牌60-17bmp图片用于OpenCV正样
- hog特征提取,c版本代码
- 基于Qt5.8+OpenCV3.2的Basler多相机触发开
- 基于Opencv实现的图像纠偏
- ImageWatch2019.vsix
评论
共有 条评论