无论如何,这不是完美的答案。但这可能会有所帮助。我重新创建了图像,如下所示:然后我读了它并按照你的路径首先将其设为二进制(稍作修改以减少噪音):import numpy as npfrom matplotlib import pyplot as pltimg = plt.imread("sample.jpg")img2 = img.copy()img2[img2.sum(-1) > 30] = 255img2[img2.sum(-1) <= 30] = 0这是修改后的结果:选项1这可能不是你问的,但它类似于评论中讨论的解决方案之一,我认为它部分正确:i, j = np.where(img2.sum(-1) > 0) # find all white coordinatesi, j = (i[j.argmax()], j[j.argmax()]) # the corner white point into the blackimg2[:i, :j] = 255 # paint whine all the left-above rectangle from this point这是最终结果:这是一个不完美但非常简单的纯 numpy 解决方案。选项 2在这个解决方案中,我们需要一些简单的微积分和线性代数。在二维空间中取两个点并在它们之间画一条线。那么,边界线的作用是什么?point2 = (i, j) # same i and j from OPTION1 (coordinates of the top-right corner)point1 = (img2.shape[0], img2[-1].sum(-1).argmin()) # the bottom-right white corner.a = (point2[1] - point1[1]) / (point2[0] - point1[0])c = point1[1] - a * point1[0]f = lambda x: int(a * x + c)现在,画线左侧的所有区域:for i in range(img2.shape[0]): img2[:i, :f(i)+1] = 255结果如下: