使用Python / PIL检测HSV颜色空间(来自RGB)的阈值
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了使用Python / PIL检测HSV颜色空间(来自RGB)的阈值,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1109字,纯文字阅读大概需要2分钟。
内容图文
![使用Python / PIL检测HSV颜色空间(来自RGB)的阈值](/upload/InfoBanner/zyjiaocheng/712/f7af7c674cc14a44b4abbbf01a9464ea.jpg)
我想拍摄RGB图像并将其转换为黑白RGB图像,如果其HSV值在某个范围之间,则像素为黑色,否则为白色.
目前我创建一个新图像,然后通过迭代其数据创建一个新的像素值列表,然后创建列表形成新图像的.putdata().
感觉应该有更快的方式来做到这一点,例如:使用.point(),但似乎.point()不会获得给定的像素,而是从0到255的值.是否存在.point()变换但是在像素上?
解决方法:
好的,这确实有效(修复了一些溢出错误):
import numpy, Image
i = Image.open(fp).convert('RGB')
a = numpy.asarray(i, int)
R, G, B = a.T
m = numpy.min(a,2).T
M = numpy.max(a,2).T
C = M-m #chroma
Cmsk = C!=0
# Hue
H = numpy.zeros(R.shape, int)
mask = (M==R)&Cmsk
H[mask] = numpy.mod(60*(G-B)/C, 360)[mask]
mask = (M==G)&Cmsk
H[mask] = (60*(B-R)/C + 120)[mask]
mask = (M==B)&Cmsk
H[mask] = (60*(R-G)/C + 240)[mask]
H *= 255
H /= 360 # if you prefer, leave as 0-360, but don't convert to uint8
# Value
V = M
# Saturation
S = numpy.zeros(R.shape, int)
S[Cmsk] = ((255*C)/V)[Cmsk]
# H, S, and V are now defined as integers 0-255
它基于维基百科对HSV的定义.随着时间的推移,我会仔细研究它.肯定有加速和错误.如果您发现任何问题,请告诉我.干杯.
结果:
从这个色轮开始:
我得到这些结果:
色调:
值:
饱和:
内容总结
以上是互联网集市为您收集整理的使用Python / PIL检测HSV颜色空间(来自RGB)的阈值全部内容,希望文章能够帮你解决使用Python / PIL检测HSV颜色空间(来自RGB)的阈值所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。