资源简介
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实现Photoshop算法(九): 高反差
- opencv 人数统计
- Opencv学习视频
- opencv_world310.lib文件
- OpenCv2 轮廓提取源代码VS2008
- opencv2.4.4
- EMCV库函数
- 基于OPENCV的背景差法提取运动目标
- opencv视频教程地址
- 基于OpenCV实现的图片识别功能源码
- OpenCV基于分水岭图像分割算法
- 基于OpenCV的图像碎片拼接.pdf
- 图像的膨胀、腐蚀、以及开闭运算O
- opencv帧差法检测运动目标
- VS2013 + Opencv + libdmtx 识别 datamatrx ECC
- OpenCV代码链接库
- RGB到HSV空间直方图均衡化 opencv
- Qt VideoCapture图像采集
- 过滤掉源图像中亮度大于滑块位置的
- opencv实现ViBe算法source code
- QT+opencv图像几何变换,包括图像平移
- 基于QT和OpenCV的五子棋实现源码
- opencv 骨架提取算法 查表索引法
- connectedComponentsWithStats.rar
- 基于OPENCV的WLD特征提取程序
- OpenCV多尺度检测
- 交通标志识别OpenCV源代码
- 基于OpenCV的摄像头动态手势轨迹识别
- 编译好的opencv_conrib库.txt
- ubuntu 12.04 +Qt+opencv采集、显示视频并拍
评论
共有 条评论