转载的,留下学习!

using System;

using System.Drawing;

namespace EngTyping.Class

{

///

/// ColorHandle 处理Rgb|Hsv的相互转换

///

internal class ColorHandle

{

public int H,S,V;

public int R,G,B;

public int C,M,Y,K;

///

/// 处理Rgb到Hsv的转换

///

///

///

///

///

public void RgbToHsv(int R,int G,int B)

{

Color MyColor=Color.FromArgb(R,G,B);

H=Convert.ToInt32(MyColor.GetHue());

//奇怪——用微软自己的方法获得的S值和V值居然不对

//S=Convert.ToInt32(MyColor.GetSaturation()/255*100);

//V=Convert.ToInt32(MyColor.GetBrightness()/255*100);

decimal min;

decimal max;

decimal delta;

decimal R1=Convert.ToDecimal(R)/255;

decimal G1=Convert.ToDecimal(G)/255;

decimal B1=Convert.ToDecimal(B)/255;

min = Math.Min(Math.Min(R1, G1), B1);

max = Math.Max(Math.Max(R1, G1), B1);

V = Convert.ToInt32(max*100);

delta = (max - min)*100;

if (max == 0 || delta == 0)

S = 0;

else

S = Convert.ToInt32(delta / max);

}

public void RgbToHsv(Color MyColor)

{

//Color MyColor=Color.FromArgb(R,G,B);

int R = MyColor.R;

int G = MyColor.G;

int B = MyColor.B;

H=Convert.ToInt32(MyColor.GetHue());

//奇怪——用微软自己的方法获得的S值和V值居然不对

//S=Convert.ToInt32(MyColor.GetSaturation()/255*100);

//V=Convert.ToInt32(MyColor.GetBrightness()/255*100);

decimal min;

decimal max;

decimal delta;

decimal R1=Convert.ToDecimal(R)/255;

decimal G1=Convert.ToDecimal(G)/255;

decimal B1=Convert.ToDecimal(B)/255;

min = Math.Min(Math.Min(R1, G1), B1);

max = Math.Max(Math.Max(R1, G1), B1);

V = Convert.ToInt32(max*100);

delta = (max - min)*100;

if (max == 0 || delta == 0)

S = 0;

else

S = Convert.ToInt32(delta / max);

}

///

/// 处理Hsv到Rgb的转换

///

///

///

///

public void HsvToRgb(int H,int S,int V)

{

H=Convert.ToInt32(Convert.ToDecimal( H )/360*255);

S=Convert.ToInt32(Convert.ToDecimal( S )/100*255);

V=Convert.ToInt32(Convert.ToDecimal( V )/100*255);

if (S==0)

{

R=0;

G=0;

B=0;

}

decimal fractionalSector;

decimal sectorNumber;

decimal sectorPos;

sectorPos = (Convert.ToDecimal(H)/255*360)/60;

sectorNumber = Convert.ToInt32(Math.Floor(Convert.ToDouble(sectorPos)));

fractionalSector = sectorPos - sectorNumber;

decimal p;

decimal q;

decimal t;

decimal r=0;

decimal g=0;

decimal b=0;

decimal ss=Convert.ToDecimal(S)/255;

decimal vv=Convert.ToDecimal(V)/255;

p =vv * (1 - ss);

q = vv * (1 - (ss * fractionalSector));

t = vv * (1 - (ss * (1 - fractionalSector)));

switch (Convert.ToInt32(sectorNumber))

{

case 0:

r =vv;

g = t;

b = p;

break;

case 1:

r = q;

g = vv;

b = p;

break;

case 2:

r = p;

g = vv;

b = t;

break;

case 3:

r = p;

g = q;

b = vv;

break;

case 4:

r = t;

g = p;

b = vv;

break;

case 5:

r = vv;

g = p;

b = q;

break;

}

R= Convert.ToInt32(r * 255);

G= Convert.ToInt32(g * 255);

B= Convert.ToInt32(b * 255);

}

///

/// RgbtoCmy

///

///

///

///

public void RgbToCmyk(decimal R,decimal G,decimal B)

{

C = Convert.ToInt32((255 - Math.Abs(R)) * 100 / 255);

M = Convert.ToInt32((255 - Math.Abs(G)) * 100 / 255);

Y = Convert.ToInt32((255 - Math.Abs(B)) * 100 / 255);

}

}

}

python数字图像处理、色彩空间类型转换_常用的色彩空间的转换相关推荐

  1. python数字图像处理以及绘图

    1, subplot的使用 matlab中的用法: subplot(m,n,p)或者subplot(m n p) subplot是将多个图画到一个平面上的工具.其中,m和n代表在一个图像窗口中显示m行 ...

  2. python绘制灰度图片直方图-python数字图像处理实现直方图与均衡化

    在图像处理中,直方图是非常重要,也是非常有用的一个处理要素. 在skimage库中对直方图的处理,是放在exposure这个模块中. 1.计算直方图 函数:skimage.exposure.histo ...

  3. python数字图像处理(17):边缘与轮廓

    在前面的python数字图像处理(10):图像简单滤波 中,我们已经讲解了很多算子用来检测边缘,其中用得最多的canny算子边缘检测. 本篇我们讲解一些其它方法来检测轮廓. 1.查找轮廓(find_c ...

  4. 第1章 Python 数字图像处理(DIP) --绪论

    Python 数字图像处理 关于本专栏 此专栏为 Python 数字图像处理(DIP)(冈萨雷斯版),专栏里文章的内容都是来自书里,全部手打,非OCR,因为很多公式,都是用LaTex输入,力求更好看的 ...

  5. (附源码)python数字图像处理课程平台 毕业设计 242339

    Python数字图像处理课程平台的开发 摘 要 数字图像处理是一门新兴技术,随着计算机硬件的发展,数字图像的实时处理已经成为可能,由于数字图像处理的各种算法的出现,使得其处理速度越来越快,能更好的为人 ...

  6. (附源码)Python数字图像处理课程平台 毕业设计242339

    Python数字图像处理课程平台的开发 摘 要 数字图像处理是一门新兴技术,随着计算机硬件的发展,数字图像的实时处理已经成为可能,由于数字图像处理的各种算法的出现,使得其处理速度越来越快,能更好的为人 ...

  7. python数字图像处理、色彩空间类型转换_Python+OpenCV图像处理—— 色彩空间转换...

    一.色彩空间的转换 代码如下: #色彩空间转换 import cv2 as cv def color_space_demo(img): gray = cv.cvtColor(img, cv.COLOR ...

  8. python如何实现图片工具_常用的十大 python 图像处理工具

    本文为 AI 研习社编译的技术博客,原标题 : 10 Python image manipulation tools. 作者 | Parul Pandey 翻译 | 安其罗•乔尔.JimmyHua 编 ...

  9. pillow是python的图像处理标准库_详解Python图像处理库Pillow常用使用方法

    pil(python image library)是python的第三方图像处理库,但是由于其强大的功能与众多的使用人数,几乎已经被认为是python官方图像处理库了. 其官方主页为:pil. pil ...

最新文章

  1. STL中的双向队列deque
  2. (转)iOS开发资源:推送通知相关开源项目--PushSharp、APNS-PHP以及Pyapns等
  3. 【HTTP】之HTTP 错误 401.3 - 访问被资源 ACL 拒绝
  4. 使用Cucumber+Rspec玩转BDD(2)——邮件激活
  5. CODE[VS] 2824 盗窃-大海的奇迹
  6. Class的三种构造方法
  7. 读懂了鱼玄机,就读懂了爱情
  8. 拼多多关键词搜索接口,商品分类ID搜索商品列表接口,关键词搜索商品销量接口,拼多多销量API接口
  9. JS设计模式与开发实践
  10. 计算机重做系统 d盘,pe重装系统后原c盘变称了d盘如何解决
  11. 网页截图服务器,命令行下的2款网页截图工具推荐
  12. 全面解析 UI/UE/交互设计
  13. 基于C#的ico图标制作与应用
  14. 根据身份证号匹配对应的城市编码
  15. matlab图像去散焦,matlab为图像加运动模糊和散焦模糊
  16. html属于页面的底部标签是,HTML5中footer标签的用法你知道吗?,HTML5中的footer标签是什么意思?...
  17. 睡眠手环APP开发上线
  18. matlab画左右半圆
  19. 互联网时光穿梭机WayBack Machine
  20. php qq登陆网站实例代码,QQ登陆网站实例代码

热门文章

  1. WinCE选择并调用输入法
  2. 搞定 docker k8s,这 2 套视频就够了
  3. python 培训 广渠门
  4. Python零基础速成班-第8讲-Python文件操作File IO、高级文件处理模块shutil、CSV、JSON、多线程基础
  5. jszip实现多层目录以及目录下文件打包
  6. Babel 都 7 了,还不来了解下?
  7. KD7742电气安规综合测试仪
  8. Infraworks 使用问题总结
  9. C# ex.StackTrace 异常定位行号不显示的问题
  10. ps教程之淘宝图片怎么加水印方法案例