1、修改颜色模式

1.1、相关知识介绍

颜色模式:是将某种颜色表现为数字形式的模型,或者说是一种记录图像颜色的方式。分为:RGB模式、CMYK模式、HSB模式、Lab颜色模式、位图模式、灰度模式、索引颜色模式、双色调模式和多通道模式。

RGB模式:利用了红、绿、蓝三原色的原理展现色彩,对机器比较友好,是最传统的方式,电视机等屏幕就是采用这种方式。

HSB模式:也叫做HSV,利用色相、饱和度、明度的原理展现色彩,对人类比较友好。

灰度模式: 用单一色调表现图像,用0到255的不同灰度值来表示图像, 0表示黑色, 255表示白色。

HSV(HSB)模式的范围

8-bit图片中

PS中的HSV范围,H是0-360,S是0-1,V(B)是0-1

opencv中的HSV范围,H是0-180,S是0-255,V是0-255

转换方式

把PS中H的值除以2,S乘255,V乘255,可以得到对应的opencv的HSV值

1.2、提取图片中的粉色

1.2.1、思路

a. 加载图片c.png

b. 将图片c.png从RGB模式改成HSV模式

c. 选取粉色区域

这里为什么要转成HSV模式而不是直接使用RGB模式,有些疑惑,于是我按照RGB模式取了粉色区域,运行后发现并没有选取出来。所以猜测,转成HSV后区域是连贯的,可使用inRange选区。

1.2.2、代码

import cv2

import numpy as np

img = cv2.imread('c.png')

hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

lower_pink = np.array([160,20,20])

upper_pink = np.array([168,255,255])

mask = cv2.inRange(hsv, lower_pink, upper_pink)

res = cv2.bitwise_and(img, img, mask= mask)

cv2.imshow('frame',img)

cv2.imshow('mask',mask)

cv2.imshow('res',res)

cv2.waitKey(0)

cv2.destroyAllWindows()

1.2.3、运行结果

图 1.1

1.2.4、知识点

imread

函数: cv2.imread(filename[, flags]) → retva

描述: 读取一张图片, 并返回图片句柄

参数: filename[要加载的图片路径]

flags[加载图片的data type, 具体参考备注1]

返回: retva[图片句柄]

备注1: >0[三通道图片]

=0[灰阶图片]

<0[带透明通道的图片]

备注2: 支持的图片 *.bmp, *.dib, *.jpeg, *.jpg, *.jpe, *.jp2, *.png, *.pbm, *.pgm, *.ppm, *.sr, *.ras, *.tiff, *.tif

cvrColor

函数: cv2.cvtColor(src, code[, dst[, dstCn]]) → dst

描述: 将图片从一种颜色模式转成另一种颜色模式

参数: src[要转换的源图片, 可以是uint8、uint16或float等]

dst[转换后的目标图片]

code[转换标识符, 具体见备注1]

返回: dst[转换后的目标图片]

备注1:RGB与GRAY转换的标识有[CV_BGR2GRAY, CV_RGB2GRAY, CV_GRAY2BGR, CV_GRAY2RGB]

RGB与CIE XYZ.Rec的转换标识有[CV_BGR2XYZ, CV_RGB2XYZ, CV_XYZ2BGR, CV_XYZ2RGB]

RGB与YCrCb的转换标识有[CV_BGR2YCrCb, CV_RGB2YCrCb, CV_YCrCb2BGR, CV_YCrCb2RGB]

RGB与HSV的转换标识有[CV_BGR2HSV, CV_RGB2HSV, CV_HSV2BGR, CV_HSV2RGB]

RGB与CIE L*a*b*的转换标识有[CV_BGR2Lab, CV_RGB2Lab, CV_Lab2BGR, CV_Lab2RGB]

RGB与CIE L*u*v* 的转换标识有[CV_BGR2Luv, CV_RGB2Luv, CV_Luv2BGR, CV_Luv2RGB]

RGB与Bayer的转换标识有[CV_BayerBG2BGR, CV_BayerGB2BGR, CV_BayerRG2BGR, CV_BayerGR2BGR, CV_BayerBG2RGB, CV_BayerGB2RGB, CV_BayerRG2RGB, CV_BayerGR2RGB]

转换标识诸如cv2.COLOR_BGR2HSV这类,可以使用以下方式查看所有的标识

>>> import cv2

>>> flags = [i for i in dir(cv2) if i.startswith('COLOR_')]

>>> print flags

inRange

函数: cv2.inRange(src, lowerb, upperb[, dst]) → dst

描述: 检查数组srv是否在lowerb数组和upperb数组之间, 将svr中符合条件的值置为255,不符合条件的值置为0

参数: src[要检查的数组]

lowerb[检查条件的下界]

upperb[检查条件的上界]

返回: dst[经过筛选处理后的数组(0和255组成)]

bitwise_and

函数: cv2.bitwise_and(src1, src2[, dst[, mask]]) → dst

描述: 将src1和src2以mask方式按位合并

参数: src1[要操作的源数组1]

src2[要操作的源数组2]

mask[标识, 标识了哪些位置要按位合并(255合并, 0置为0)]

返回: dst[处理后的数组]

如何通过RGB获取HSV的颜色值

可以参考以下方法

>>> green = np.uint8([[[0,255,0 ]]])

>>> hsv_green = cv2.cvtColor(green,cv2.COLOR_BGR2HSV)

>>> print hsv_green

[[[ 60 255 255]]]

附录

在本篇文章中所有示例所处理的图片为下图0.1,图片名字为a.png。

图 0.1

下图0.2, 图片名字为b.png

图 0.2

下图0.3, 图片名字为c.png

图 0.3

本文参考文章

python怎么设置颜色深浅变化_【opencv_python学习之三】图像处理(一)更改色彩模式...相关推荐

  1. python怎么设置颜色深浅变化_机器学习中减弱不同图像数据色调及颜色深浅差异...

    关键词:消除不同图像数据色调差异/消除颜色深浅差异/病理/机器学习/深度学习/人工智能 机器学习训练图像数据时可能会因为图像数据之间的颜色深浅,色调等影响训练和预测结果,本方法可以减弱颜色深浅/色调不 ...

  2. python怎么设置颜色深浅变化_Python赋值、深浅copy

    Python赋值.深浅copy assignment: 在 Python 中,对象的赋值就是简单的对象引用,这点和 C++不同,如下所示 a = [1, 2, 'hello', ['python', ...

  3. python怎么设置颜色深浅变化_python基础之数据类型操作补充,集合及其操作,深浅拷贝...

    内容概要: 数据类型操作补充 集合及其操作 深浅拷贝 1.基础数据类型补充 1.1字符串的操作补充 li = ["李嘉诚", "麻花藤", "黄海峰& ...

  4. python怎么设置颜色深浅变化_python之深浅拷贝

    python中,对象的赋值,拷贝(深/浅拷贝)之间是有差异的,如果使用的时候不注意,就可能产生意外的结果,其实这个是由于共享内存导致的结果 拷贝:原则上就是把数据分离出来,赋值其数据,并以后修改互不影 ...

  5. python都能做什么图_如何学习数据分析

    展开全部 第1本<谁说菜鸟不会数据分析入门篇> 很有趣的数据分析书!基本看62616964757a686964616fe58685e5aeb931333365663539过就能明白,以小说 ...

  6. python不带颜色的图形_如何使用Matplotlib设置图形背景颜色的不透明度 - python

    我一直在玩Matplotlib,无法弄清楚如何更改图形的背景颜色,或者如何使背景完全透明. 参考方案 如果只希望图形和轴的整个背景都是透明的,则在使用transparent=True保存图形时,只需指 ...

  7. python 动画随人脸动作变化_用Python获取摄像头并实时控制人脸的实现示例

    实现流程 从摄像头获取视频流,并转换为一帧一帧的图像,然后将图像信息传递给opencv这个工具库处理,返回灰度图像(就像你使用本地静态图片一样) 程序启动后,根据监听器信息,使用一个while循环,不 ...

  8. python如何设置画布开始位置_只要十分钟,Python绘图神器Turtle了解一下?

    python的强大在于它有许多的强大的库,turtle就是其中之一. 利用turtle,你可以进行交互式的绘画,作为一个艺术白痴,想要画一幅画可能很困难,但是利用python的turtle库,只需要几 ...

  9. python怎么设置函数超时时间_在python运行时为函数设置超时秒数

    我遵循this解.在 我试图为我的函数during runtime设置超时秒数,这使我能够灵活地传递不同的timeout seconds,甚至不打开脚本(测试.py)在 在超时.py在from fun ...

  10. python绘图设置标题出现乱码_解决python2 绘图title,xlabel,ylabel出现中文乱码的问题...

    Python绘图如何显示中文标题一个懂得以幽默态度面对自己缺点并将缺点变成自己专属的特色-这才是真正乐观勇敢的人. 采用matplotlib作图时默认设置下是无法显示中文的,例如编写如下python脚 ...

最新文章

  1. 2019世界机器人大赛圆满落幕,荆州中学等15支队伍获「全能奖」
  2. 加上2T硬盘再装系统遇到问题
  3. windows powershell
  4. 一年后斩获腾讯T3,层层深入
  5. NFS应用场景及环境搭建
  6. 笔记-信息系统安全管理-信息安全(混合)
  7. Zenoss学习杂记(十)
  8. css写出三角形(兼容IE)
  9. phpweb2.0 开发实战 ----- 配置虚拟主机
  10. 为什么要保持软件包依赖项自由循环的五个原因
  11. 菜鸟学习笔记:Java提升篇2(容器2——Map、Set、迭代器)
  12. java任务追踪预警怎么写_分布式系统中如何优雅地追踪日志(原理篇)
  13. Flutter进阶—质感设计之进度条
  14. Altium Designer(四):敷铜设置
  15. HTML DOM nodeName nodeValue
  16. python基本词汇的特点_Python 爬完评论只会做词云?情感分析了解一下
  17. 2018年最好用的百度网盘资源搜索神器排行
  18. android系统计步修改,安卓手机计步软件怎么修改步数 无需root轻松修改步数
  19. 使用ACR122U NFC读卡器对M1卡进行读写操作(可以读写中文)
  20. android 手机安装windows7,安卓手机安装运行Win7系统教程(图文)

热门文章

  1. 浙江大学公开课《王阳明心学》
  2. word打开老是配置进度_打开word2010总是出现配置进度怎么办_打开word2010出现配置进度的解决方法-系统城...
  3. springboot干什么的_SpringBoot是什么?干嘛用的?新手入门看这一篇就够了
  4. cvc降噪和主动降噪_主动降噪技术有哪些?说说什么是ANC、ENC、DSP、CVC降噪
  5. Ticket管理工具:Redmine
  6. 达朴汇联CEO张焱:从隐私计算出发,共建Web3.0
  7. MySql 报错:In aggregated query without GROUP BY, expression #1 of SELECT list contains....
  8. 中国国家航天局:探月工程四期还有三次任务
  9. 计算机毕业论文选题影视方向,毕业设计选题方向
  10. 关于贷后的8个专业名词解析