在底部图像中找到最大黑色像素数的最小平面。找到顶部图像的黑色像素的峰值

Find the minimum plane of the maximum number of black pixels in the bottom image. Find the peak of the black pixels for the top image

这是实际图片

我想找出二值图像中 2 个不规则边缘之间的距离。那就是我在下图中用红色标记了。我的想法是在两个边缘上画一条彩色线(比如红色),然后以 10 个相等的间隔计算它们之间的距离(黄色标记)

我将图片裁剪成两部分。假设上半部分是

下半部分是

我想画两条红线,或者只是想知道这两条线之间的距离。我一直在使用 OpenCV 和 PILLOW 进行了很多步骤。

还有一些图像实例,其中在几列顶部图像中没有黑色像素。我如何计算黑色像素与顶部的距离?只是最上面的图片。

这是一种可能的方法。我会把细节留给你。但想法是使用 Numpy argmax(或适当的 argmin)来获取每列中所有黑色之后第一个白色的索引。首先,我垂直翻转图像,使黑色位于顶部。 Numpy argmax,似乎找到了沿列的第一个白色值。

输入(下图):

import numpy as np
import cv2

# read image
img = cv2.imread("img.png")

# Note that there is a 2 pixel tall white line at the bottom
# Note that there is columns of black at the left and right sides

# convert to grayscale
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# threshold
img = cv2.threshold(img,0,255,cv2.THRESH_BINARY)[1]

# flip vertically
img = cv2.flip(img, 0)

# remove 2 pixels at the top
img = img[2:, :]

# add one pixel row of white at bottom
img = cv2.copyMakeBorder(img, 0, 2, 0, 0, cv2.BORDER_CONSTANT, value=255)

# find max along each column
max = np.argmax(img, axis=0)
print(max.shape)

print(max)

cv2.imshow('flipped',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

这是输出:

(709,)
[112 112 112 112  32  32  32  32  32  32  32  32  32  32  32  32  32  32
  31  31  31  31  31  31  31  31  31  31  30  30  30  30  30  30  30  30
  30  30  30  30  30  30  30  30  30  30  30  31  31  31  31  31  31  31
  31  31  31  31  31  31  31  31  31  30  30  30  30  30  30  30  30  30
  30  30  30  31  31  32  32  33  33  34  35  35  36  36  36  36  36  36
  36  36  36  36  36  36  36  36  37  37  38  38  39  39  39  40  40  40
  41  41  43  43  44  45  45  46  46  46  46  46  46  46  46  46  46  46
  46  46  46  46  46  46  46  46  46  46  46  46  46  45  45  45  45  44
  44  44  44  44  44  44  44  44  44  44  44  44  43  43  43  43  43  43
  43  43  43  43  43  43  43  44  44  44  44  44  44  44  44  43  43  43
  42  42  42  42  42  42  42  42  42  42  41  41  40  40  40  40  40  40
  40  40  40  40  40  40  40  40  40  40  40  40  39  39  39  39  39  39
  39  39  39  39  39  39  39  39  39  39  39  39  38  38  37  37  37  37
  37  37  37  36  36  36  36  36  35  35  35  34  34  34  34  34  34  34
  34  34  33  33  32  32  32  32  32  32  32  32  32  32  32  32  32  32
  33  33  34  34  35  35  36  37  37  37  37  38  38  38  38  38  38  38
  38  38  38  38  38  38  38  39  39  40  40  40  40  40  39  39  39  39
  39  39  38  38  38  37  37  37  37  37  37  37  37  37  37  37  37  37
  37  38  38  38  39  40  40  41  41  41  39  39  38  37  37  37  37  37
  37  37  37  37  37  37  37  37  37  37  37  37  37  37  37  37  38  38
  38  39  39  39  39  39  39  39  39  41  41  41  41  41  41  41  41  41
  41  41  41  41  41  41  41  41  41  41  41  41  41  41  41  41  41  41
  40  40  40  40  40  40  40  40  40  40  39  39  38  38  37  37  37  37
  36  36  36  36  36  36  35  35  34  34  34  33  33  33  32  31  31  31
  31  31  31  31  31  31  31  31  31  31  31  31  31  31  31  31  31  31
  31  31  31  31  31  31  31  31  30  30  29  29  29  28  28  28  28  27
  27  26  26  26  26  26  26  26  26  26  26  26  26  26  26  27  27  27
  27  27  27  27  27  27  28  28  28  28  28  28  28  28  28  28  28  28
  28  28  28  28  28  28  28  28  28  28  28  28  28  28  29  29  29  29
  29  29  29  29  29  29  29  29  29  29  29  29  29  29  29  29  29  29
  29  28  28  27  27  27  27  27  27  27  27  27  27  27  27  27  28  28
  28  28  29  29  30  30  30  31  31  32  32  33  33  34  34  35  35  36
  36  36  37  37  37  38  38  39  39  39  39  39  39  39  39  39  39  39
  39  38  38  37  37  37  37  37  37  36  36  35  35  35  35  35  35  35
  35  35  35  35  35  35  35  35  35  35  35  36  36  36  36  36  36  36
  36  36  36  36  36  36  37  37  37  37  37  37  37  37  37  37  37  37
  37  37  37  37  37  37  37  37  37  37  37  37  37  37  37  37  37  37
  37  37  37  37  37  37  37  37  37  37  37  37  37  37  37  37  37  37
  37  37  37  37  37  37  37  37  37  37  37  37  37  38  38  38  39  39
  39  39  39  40 112 112 112]

对于顶部使用 argmin 或使用 img=255-img 反转极性,然后使用 argmax。