擅长:python、mysql、java
<p>我试着用另一种方式来做这件事——使用我为另一个答案修剪的相同图像。这一次,我将每个像素计算为距原点距离的平方,然后将输入图像中的所有黑色像素设置为一个大数字,使其不适合作为最近的像素。然后我找到数组中的最小数</p>
<pre><code>#!/usr/bin/env python3
import sys
import numpy as np
from PIL import Image
# Open image in greyscale and make into Numpy array
im = Image.open('curve.png').convert('L')
na = np.array(im)
# Make grid where every pixel is the squared distance from origin - no need to sqrt()
# This could be done outside main loop, btw
x,y = np.indices(na.shape)
dist = x*x + y*y
# Make all black pixels inelligible to be nearest
dist[np.where(na<128)] = sys.maxsize
# Find cell with smallest value, i.e. smallest distance
resultY, resultX = np.unravel_index(dist.argmin(), dist.shape)
print(f'Coordinates: [{resultY},{resultX}]')
</code></pre>
<p><strong>样本输出</strong></p>
<pre><code>Coordinates: [159,248]
</code></pre>
<p><strong>关键词</strong>:Python、图像处理、最近的白色像素、最近的黑色像素、最近的前景像素、最近的背景像素、Numpy</p>