给定一条线,我想快速创建一个二元图像,其中两个区域由线分隔。我这样做是为了
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数组。 m
和c
是等式中的斜率和常数。
我得到输出,如
有更快的方法吗?
答案 0 :(得分:1)
您可以简单地执行以下操作:
row_idx = np.arange(rows)[:, None]
col_idx = np.arange(cols)
binary_img = (row_idx - m * col_idx) > c
这将使您接近所需,但根据您为线方程定义轴的方式,您可能需要将结果翻转过来。