Q
从弯曲线挑选颜色
11
A
回答
1
只需创建一行沿着该行的RGB值列表,然后过滤该列表以删除类似相邻的值。
#find RGB values
rgb_values = []
for point in line:
r, g, b = rgb_im.getpixel(point)
rgb_values += [ (r,g,b)]
#remove similar adjacent values
for i in range(len(rgb_values)-1):
if rgb_values[i] == rgb_values[i+1]:
rgb_values.pop(i)
i -= 1
if len(rgb_values) > 1:
if rgb_values[-1] == rgb_values[-2]:
rgb_values.pop(-1)
1
我认为你的主要问题是要找到从曲线到其他的一端遵循像素的良好路径。一旦你决定了这个路径,你可以按照它来检查像素颜色。
现在,我建议你自己输入路径,通过指定一组路标。以下是您示例图的一些代码。我把第一个点放在左边的紫色光盘上,第二个放在角度上,最后一个放在右下方的紫色光盘上。
from PIL import Image
from numpy import array, arange
im = Image.open("aqoGkjs.png")
rgb_im = im.convert('RGB')
def get_color_at(p): # color function as mattsap suggested
r, g, b = rgb_im.getpixel(tuple(p))
if r > g and r > b:
return 'Purple'
elif r < 10 and g < 10:
return 'Blue'
return 'Cyan'
colors = []
via_points = [array([25, 65]), array([185, 44]), array([240, 210])]
for i in xrange(len(via_points) - 1):
for x in arange(0, 1, 0.01):
p = x * via_points[i] + (1 - x) * via_points[i + 1] # linear interpolation
cur_color = get_color_at(p)
if cur_color == 'Blue': # ignore borders
continue
if not colors or cur_color != colors[-1]:
colors.append(cur_color)
print colors
它打印:
['Purple', 'Cyan', 'Purple', 'Cyan', 'Purple', 'Cyan', 'Purple', 'Cyan', 'Purple', 'Cyan', 'Purple', 'Cyan', 'Purple', 'Cyan', 'Purple', 'Cyan', 'Purple']
你的大图像,你可以输入所有的航点由手。或者尝试制作一段聪明的代码来自动找到它们)
相关问题
- 1. 挑选颜色更是从白色
- 2. 龟弯曲线
- 3. 直线弯曲
- 4. Android颜色挑选不正确颜色
- 5. AS3:从对象中挑选颜色
- 6. 从数组中挑选两种颜色
- 7. android java从ImageView中挑选颜色
- 8. 从数组中挑选随机颜色
- 9. 更改zedgraph选择的曲线颜色
- 10. 弯曲曲线内的折线图
- 11. 三JS弯曲(弯曲)CSS3DObject
- 12. 弯曲的线条图案
- 13. 像素弯曲法线图
- 14. 绘制折线图弯曲
- 15. 折线图的弯曲线重量
- 16. 用JComboBox Java Swing挑选颜色
- 17. SDL2.0纹理颜色变为挑选
- 18. C++,directx 12:颜色挑选问题
- 19. 挑选两种颜色,并在
- 20. 图像颜色挑选脚本
- 21. 挑选颜色通过Interface Builder中
- 22. 如何挑选颜色UIBarButtonItem tintColor
- 23. 根据当前颜色表挑选颜色
- 24. 在弯曲项目中显示弯曲
- 25. Matplotlib - 曲线下颜色基于光谱颜色
- 26. 用两种颜色描绘曲线?
- 27. 更改贝塞尔曲线的颜色
- 28. WEKA ROC曲线 - 颜色解释
- 29. Matlab - 平滑曲线中的弯曲和锯齿线
- 30. CSS背景颜色挑剔
这有点不清楚你正在尝试做什么。请显示一些代码?这张图片的来源是什么? –
啊,好吧,我会添加一些代码并尝试扩展,介意给我一分钟。 –
我很好奇:-)你是否能够说出你在做什么 - 如何产生它们以及如何使用它们? –