擅长:python、mysql、java
<p>我认为你的主要问题是找到一条好的像素路径,从曲线的一端到另一端。一旦你决定了这条路,你就可以跟着它,并检查像素颜色。在</p>
<p>现在,我建议您自己通过指定一组航路点来输入路径。下面是一些代码用于示例图。我把第一个点放在左边的紫色圆盘上,第二个点在角度上,最后一个点在右下角的紫色圆盘上。在</p>
<pre><code>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
</code></pre>
<p>它打印:</p>
^{pr2}$
<p>对于你的大图像,你可以手工输入所有的航路点。或者尝试编写一段智能代码来自动找到它们;)</p>