<p>我修剪你的图像如下-请不要张贴带有轴和标签的图像,如果人们需要处理它们</p>
<p><a href="https://i.stack.imgur.com/PDrlG.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/PDrlG.png" alt="enter image description here"/></a></p>
<p>然后利用Scipy的<code>cdist()</code>函数。所以,首先生成图像中所有白色像素的列表,然后计算从左上角的原点到列表中每个像素的距离。然后找到最小的一个</p>
<pre><code>#!/usr/bin/env python3
import numpy as np
from PIL import Image
from scipy.spatial.distance import cdist
# Open image in greyscale and make into Numpy array
im = Image.open('curve.png').convert('L')
na = np.array(im)
# Get coordinates of white pixels
whites = np.where(na>127)
# Get distance from [0,0] to each white pixel
distances = cdist([(0,0)],np.transpose(whites))
# Index of nearest
ind = distances.argmin()
# Distance of nearest
d = distances[0,ind]
# Coords of nearest
x, y = whites[0][ind], whites[1][ind]
print(f'distance [{x},{y}] = {d}')
</code></pre>
<p><strong>样本输出</strong></p>
<pre><code>distance [159,248] = 294.5929394944828
</code></pre>
<p>如果我画一个以原点为中心半径=294的红色圆圈和一个以x,y坐标为中心的蓝色圆圈:</p>
<p><a href="https://i.stack.imgur.com/udAdU.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/udAdU.png" alt="enter image description here"/></a></p>
<p><strong>关键词</strong>:Python、图像处理、最近的白色像素、最近的黑色像素、最近的前景像素、最近的背景像素、Numpy、cdist()</p>