1

给定一条线,我想快速创建一个由该线分隔的两个区域的二值图像。我这样做是

rows, cols = pix_arr.shape
arr = [ func(i) for i in range(0,rows*cols)]
arr = np.array(arr,dtype = 'bool')
arr = arr.reshape(pix_arr.shape)

func(i) 是

func = lambda i: (i / cols) - m*(i % cols)-c < 0

并且pix_arr是一些 2D numpy 数组。是直线方程中的斜率和常数mc

我得到输出,例如

在此处输入图像描述

有没有更快的方法来做到这一点?

4

1 回答 1

1

您可以简单地执行以下操作:

row_idx = np.arange(rows)[:, None]
col_idx = np.arange(cols)

binary_img = (row_idx - m * col_idx) > c

这将使您接近您想要的,尽管取决于您如何为直线方程定义轴,您可能需要将结果倒置。

于 2014-03-28T17:15:37.783 回答