opencv中HSV的值范围是:H 0-180;S 0-255; V 0-255

import cv2
from PIL import Image
import numpy as npdef fetch_img(img, first_list, color_value_list, width, height):r,g,b = color_value_listsec_list = [0, width, 2*width]third_value_list = [0, 1, 2]img[first_list[0]:first_list[1], sec_list[0]:sec_list[1], third_value_list[0]] = np.full((height, width),b)img[first_list[0]:first_list[1], sec_list[0]:sec_list[1], third_value_list[1]] = np.full((height, width),g)img[first_list[0]:first_list[1], sec_list[0]:sec_list[1], third_value_list[2]] = np.full((height, width),r)img[first_list[0]:first_list[1], sec_list[1]:sec_list[2], third_value_list[0]] = np.full((height, width),255 - b)img[first_list[0]:first_list[1], sec_list[1]:sec_list[2], third_value_list[1]] = np.full((height, width),255 - g)img[first_list[0]:first_list[1], sec_list[1]:sec_list[2], third_value_list[2]] = np.full((height, width),255 - r)return imgdef fetch_img2(img, first_list, color_value_list, width, height):h,s,v = color_value_list# print("%d\t%d"%(h, 90+h if h<90 else h-90 ))#opencv中色相环是顺时针的,和网上图片一样sec_list = [0, width, 2*width]third_value_list = [0, 1, 2]img[first_list[0]:first_list[1], sec_list[0]:sec_list[1], third_value_list[0]] = np.full((height, width),h)img[first_list[0]:first_list[1], sec_list[0]:sec_list[1], third_value_list[1]] = np.full((height, width),s)img[first_list[0]:first_list[1], sec_list[0]:sec_list[1], third_value_list[2]] = np.full((height, width),v)img[first_list[0]:first_list[1], sec_list[1]:sec_list[2], third_value_list[0]] = np.full((height, width),90+h if h<360 else h-90)img[first_list[0]:first_list[1], sec_list[1]:sec_list[2], third_value_list[1]] = np.full((height, width),s)img[first_list[0]:first_list[1], sec_list[1]:sec_list[2], third_value_list[2]] = np.full((height, width),v)return imgdef generate_chart():width = 100height = 50#RGB模型下画12色相环color_num = 12background = np.zeros((color_num*height,2*width,3))color_dict = {"red":[255,0,0],"orange":[255,128,0],"yellow":[255, 255, 0],"yellowgreen":[128, 255, 0],"green":[0, 255, 0],"cyan_green":[0, 255, 128],"cyan":[0, 255, 255],"indigo":[0,128,255],"blue":[0, 0, 255],"purple":[128, 0, 255],"magenta":[255, 0, 255],"purple_red":[255, 0, 128]}color_list = ['red', 'orange', 'yellow', 'yellowgreen', 'green', 'cyan_green', 'cyan', 'indigo', 'blue', 'purple', 'magenta', 'purple_red']pos_list = range(0,(color_num+1)*height,height)for num in range(len(color_list)):color = color_list[num]color_value_list = color_dict[color]pos_value = [pos_list[num],pos_list[num+1]]background = fetch_img(background, pos_value, color_value_list,width, height)cv2.imwrite("12.jpg", background)# cv2.imshow("src_12",background)#RGB模式下画24色相环color_num = 24background = np.zeros((color_num*height,2*width,3))color_dict = {"red":[255,0,0],"red_orange":[255,64,0],"orange":[255,128,0],"orange_yellow":[255, 192, 0],"yellow":[255, 255, 0],"yellowyellowgreen":[192, 255, 0],"yellowgreen":[128, 255, 0],"yellowgreengreen":[64, 255, 0],"green":[0, 255, 0],"green_cyan_green":[0, 255, 64],"cyan_green":[0, 255, 128],"cyan_green_cyan":[0, 255, 192],"cyan":[0, 255, 255],"cyan_indigo":[0,192,255],"indigo":[0,128,255],"indigo_blue":[0, 64, 255],"blue":[0, 0, 255],"blue_purple":[64, 0, 255],"purple":[128, 0, 255],"purple_magenta":[192, 0, 255],"magenta":[255, 0, 255],"magenta_purple_red":[255, 0, 192],"purple_red":[255, 0, 128],"purple_red_red":[255,0,64]}color_list = ['red', "red_orange",'orange',"orange_yellow",'yellow', "yellowyellowgreen",'yellowgreen',"yellowgreengreen",'green', "green_cyan_green",'cyan_green',"cyan_green_cyan",'cyan', 'cyan_indigo','indigo','indigo_blue', 'blue', 'blue_purple','purple', 'purple_magenta','magenta','magenta_purple_red', 'purple_red',"purple_red_red"]pos_list = range(0,(color_num+1)*height,height)for num in range(len(color_list)):color = color_list[num]color_value_list = color_dict[color]pos_value = [pos_list[num],pos_list[num+1]]background = fetch_img(background, pos_value, color_value_list,width, height)cv2.imwrite("24.jpg", background)#HSV模式下画12色相环color_num = 12background = np.zeros((color_num * height, 2 * width, 3))# color_dict = {"red": [0, 255, 255], "orange": [30, 255, 255], "yellow": [60, 255, 255],"yellowgreen": [90, 255, 255], "green": [120, 255, 255], "cyan_green": [150, 255, 255],"cyan": [180, 255, 255], "indigo": [210, 255, 255], "blue": [240, 255, 255],"purple": [270, 255, 255], "magenta": [300, 255, 255], "purple_red": [330, 255, 255]}color_dict = {"red": [0, 255, 255], "orange": [15, 255, 255], "yellow": [30, 255, 255],"yellowgreen": [45, 255, 255], "green": [60, 255, 255], "cyan_green": [75, 255, 255],"cyan": [90, 255, 255], "indigo": [105, 255, 255], "blue": [120, 255, 255],"purple": [135, 255, 255], "magenta": [150, 255, 255], "purple_red": [165, 255, 255]}color_list = ['red', 'orange', 'yellow', 'yellowgreen', 'green', 'cyan_green', 'cyan', 'indigo', 'blue', 'purple','magenta', 'purple_red']pos_list = range(0, (color_num + 1) * height, height)background = cv2.cvtColor(np.uint8(background), cv2.COLOR_BGR2HSV)for num in range(len(color_list)):color = color_list[num]color_value_list = color_dict[color]pos_value = [pos_list[num],pos_list[num+1]]background = fetch_img2(background, pos_value, color_value_list,width, height)background = cv2.cvtColor(background, cv2.COLOR_HSV2BGR)cv2.imwrite("12_hsv.jpg",background)def process():generate_chart()if __name__ == "__main__":process()

    
 12色相环_rgb模式下          12色相环_hsv模式下             24色相环_rgb模式下和下图对比效果是一样的

python opencv实现 12色相环、24色相环(基于RGB空间和基于HSV空间实现)相关推荐

  1. 【opencv图像基础】图像常见的通道模式:RGB、YUV、HSV

    1. RGB 2. YUV YUV是被电视系统所采用的一种颜色编码方法.RGB 信号经过矩阵变换得到亮度信号Y和两个色差信号R- Y(即U).B-Y(即V). YUV色彩空间十分重要是因为表示亮度的Y ...

  2. python种颜色循环_python图像主色调(主颜色)提取,在hsv空间k均值迭代实现

    #!coding=utf-8fromPIL importImage importrgb2hsv importrandom asran importhsvTRGB frompylab import* # ...

  3. 用OpenCV实现Photoshop算法(七): 调整色相饱和度

    系列文章: 用OpenCV实现Photoshop算法(一): 图像旋转 用OpenCV实现Photoshop算法(二): 图像剪切 用OpenCV实现Photoshop算法(三): 曲线调整 用Ope ...

  4. Python+Opencv读取高帧率USB摄像头问题

    前几次使用Python+Opencv,对网络摄像头,USB摄像头进行数据采集,基本流程已经跑通,没什么大问题.最近项目中使用了一款120fps/s的USB摄像头,但是调试好代码运行后,问题来了. 遇到 ...

  5. Python OpenCV 3.x 示例:1~5

    原文:OpenCV 3.x with Python By Example 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自[ApacheCN 计算机视觉 译文集],采用译后编辑(MTPE)流 ...

  6. Python OpenCV应用K均值聚类进行颜色量化

    Python OpenCV应用K均值聚类进行颜色量化 1. 效果图 2. 颜色量化是什么? 3. MiniBatchKMeans & KMeans 4. 源码 参考 在这篇博客文章中,我将向您 ...

  7. python opencv cv2.cvtColor()方法(将图像从一种颜色空间转换为另一种颜色空间)(转换成灰度图)

    def cvtColor(src, code, dst=None, dstCn=None): # real signature unknown; restored from __doc__" ...

  8. 【OpenCV 例程200篇】24. 图像的仿射变换

    [OpenCV 例程200篇]24. 图像的仿射变换 欢迎关注 『OpenCV 例程200篇』 系列,持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列,持续更新中 几何变换的可以分 ...

  9. Python+OpenCv实现AI人脸识别身份认证系统(2)——人脸数据采集、存储

    原 Python+OpenCv实现AI人脸识别身份认证系统(2)--人脸数据采集.存储 2019年07月02日 08:47:52 不脱发的程序猿 阅读数 602更多 所属专栏: 人脸识别身份认证系统设 ...

  10. python+opencv调用ip摄像头(基于RTSP实现)

    python+opencv调用ip摄像头(基于RTSP实现) 采用RTSP(Real Time Streaming Protocol),RFC2326,实时流传输协议,RTSP是TCP/IP协议体系中 ...

最新文章

  1. ASP.NET Core中的依赖注入(2):依赖注入(DI)
  2. 如何正确使用as follows 与 following
  3. PHP获取当前域名$_SERVER['HTTP_HOST']和$_SERVER['SERVER_NAME']的区别
  4. 我用 PyTorch 复现了 LeNet-5 神经网络(自定义数据集篇)!
  5. 数字信号处理学习笔记(五)|有限脉冲响应数字滤波器的设计
  6. MySQL的答理证和技艺撑持费用
  7. kubernets kube-proxy原理分析
  8. 如何做好网站内部优化
  9. JavaScript中setInterval的参数传递个人归纳
  10. 兼职做了DB设计和维护的体会(存储过程,视图,函数,范式)
  11. VirtualBox安装MACOSX 10.13虚拟机
  12. cisco交换机配置方法
  13. android barchart设置标题,android - 如何设置MPAndroidChart BarChart的高度和宽度? - 堆栈内存溢出...
  14. 我关注的一周技术动态 2015.8.23
  15. 阿里的活动宣传做得好 一百分!
  16. 编码器的集电极输出、电压输出、互补输出和线性驱动输出
  17. 女人假正经的十三种表现
  18. CGAL例程:地理信息系统----点云数据生成DSM、DTM、等高线和数据分类
  19. ubuntu怎么设置系统语言英文_Ubuntu系统设置中文语言的方法教程,Ubuntu系统怎么设置中文语言?...
  20. [数论] EXBSGS(拔山盖世算法)

热门文章

  1. Alexa查询名词解释
  2. 人脸识别的loss总结
  3. 【网络技术题库梳理11】第三道大题——DHCP报文
  4. 端口已被占用1080
  5. 在云服务器上搭建Kali系统-最新kali2021.3版本+避坑指南
  6. 坐标转换 | 高斯坐标转经纬度坐标
  7. oracle经纬度换算成xy坐标,xy坐标转换经纬度【处置步骤】
  8. 基于MATLAB的语音信号设计,基于MATLAB的语音信号处理系统设计
  9. 新编计算机基础教程考试知识点,新编计算机基础教程
  10. win10底部任务栏无响应怎么修复