double hue2rgb( float p, float q, float rgb )
{
double color;
if ( rgb < 0.f ){
rgb = rgb + 1.f;
}
if ( rgb > 1.f ){
rgb = rgb - 1.f;
}
if ( 6.f * rgb < 1 )
{
color = p + ( q - p ) * 6.0 * rgb;
}
else if ( 2.0 * rgb < 1 )
{
color = q;
}
else if ( 3.0 * rgb < 2 )
{
color = p + ( q - p ) * ( ( 2.0 / 3.0 ) - rgb ) * 6.0;
}
else
{
color = p;
}
return color;
}
void rgb2hls(DWORD rgb, float &hue, float &lum, float &sat)
{
float r, g, b;
float rgb_min, rgb_max, delta;
r = GetRValue( rgb ) / 255.0; //Where RGB values = 0 / 255
g = GetGValue( rgb ) / 255.0;
b = GetBValue( rgb ) / 255.0;
rgb_max = max( r, max( g, b ) );
rgb_min = min( r, min( g, b ) );
delta = rgb_max - rgb_min;
if ( !delta ){
hue = 0.f;
sat = 0.f;
}
else if ( rgb_max == r ){
if ( g >= b ){
hue = 60 * ( g - b ) / delta;
}
else {
hue = 60 * ( g - b ) / delta + 360;
}
}
else if ( rgb_max == g){
hue = 60 * ( b - r ) / delta + 120;
}
else /*if ( rgb_max == b )*/{
hue = 60 * ( r - g ) / delta + 240;
}
lum = ( rgb_max + rgb_min ) / 2.f;
if ( lum == 0.f ){
sat = 0.f;
}
else if ( lum <= 0.5f ){
sat = delta / ( 2 * lum );
}
else {
sat = delta / ( 2 - 2 * lum );
}
}
void hls2rgb(float hue, float lum, float sat, DWORD &rgb)
{
float q, p;
float r, g, b;
float h;
float tr, tg, tb;
if ( sat == 0.f ){
r = hue * 255.f;
g = hue * 255.f;
b = hue * 255.f;
}
else {
if ( lum < 0.5f ){
q = lum * ( 1.f + sat );
}
else {
q = lum + sat - ( lum * sat );
}
p = 2.f * lum - q;
h = hue / 360.f;
//h = hue;
tr = h + 1.f / 3.0f;
tg = h;
tb = h - 1.f / 3.0f;
r = hue2rgb( p, q, tr );
g = hue2rgb( p, q, tg );
b = hue2rgb( p, q, tb );
r *= 255.f;
g *= 255.f;
b *= 255.f;
rgb = RGB( (BYTE)r, (BYTE)g, (BYTE)b );
}
}
Reference:
http://zh.wikipedia.org/wiki/HSL和HSV色彩空间
分享到:
相关推荐
本程序用于RGB和HLS色彩模型的转换,对于图形学的初学者有一定的帮助
C++实现的RGB与HLS颜色空间互换程序,在图像处理中会经常用到,算法简单,容易理解,可直接移植的需要的地方
RGB与HLS模型转换 一个简单的C程序,仅在数值上验证 论文有图片,使用画图等工具验证C程序转换正确
在一个类中实现了包括了RGB和HLS设定
主要是利用matlab进行编程。编程的内容是关于rgb坐标空间与hls坐标空间的转换。
cv2.cvtColor函数封装了各种颜色空间之间的转换,唯独没有RGB与HSI之间的转换,网上查来查去也只有C++或MATLAB版本的,自己要用到python里,所以就写写python版本的。 HSI颜色模型是一个满足计算机数字化颜色管理...
hls是xilinx的高层次综合,本例子是本人手打经过验证没问题,快速上手hls,例子有部分注释,学习理解hls不错的
hls,在2020.2之前的HLS下,2020.2之后没带opencv,需配置完成,才可直接运行
内容摘要:请看csdn博文 csdn博文链接如下: ... 注意!注意!...4、了解Xilinx HLS设计思路和方法; 5、了解zynq系列器件的vivado设计方法 6、了解VDMA的使用和SDK配置; 7、了解SDK使用方法和技巧;
最新版本的ckplayer-x 直接支持了html5播放m3u8格式的视频,但是PC平台上使用h5播放器播放m3u8时,ckplayer-x内部需要加载一个hls.min.js。因为下载的ckplayer.zip安装包没有包含该文件,故从其他地方找到相关文件。
HLS VITIS opencv下载
hls upload to akamai cdn
内含视频服务器图文设置,以及html示例。浏览器上实现播放hls视频
hls.js是一个JavaScript库,可实现HTTP Live Streaming客户端。...它通过将MPEG-2传输流和AAC / MP3流转换为ISO BMFF(MP4)片段来工作。...hls.js用ECMAScript6编写,并使用Babel在ECMAScript5中转译。
使用HLS创建一个FIR滤波器,并对其源程序、HLS优化等进行分析。
mnist-nnet-hls-zynq7020-fpga
videojs支持hls播放
HLS协议标准 HLS协议标准 HLS协议标准 HLS协议标准 HLS协议标准 HLS协议标准 HLS协议标准 HLS协议标准
D1_05 Introduction to Vitis HLS_Frederic Rivoallon_region
zynq平台下,如何用硬件加速opencv...· 如何在加速器功能中, 通过替换为HLS综合视频库功能的方迅速加速OpenCV功能调用。 · 如何在Zynq ZC702参考设计中迅速将Vivado HLS建立的加速器功能集成到Vivado IP集成器中。