2014-03-28 39 views
1

给定一条线我想快速创建一个由线段分隔的两个区域的二进制图像。我这样做是Python:从线条高效地创建二进制图像

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是线的方程中的斜率和常数。

我得到的输出如

enter image description here

是否有这样做的一个更快的方法?

回答

1

你可以简单地这样做:

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

binary_img = (row_idx - m * col_idx) > c 

这将让你接近你想要什么,尽管这取决于你如何定义你的直线方程的轴,您可能需要翻转结果倒挂。