2014-03-28 70 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 

這將讓你接近你想要什麼,儘管這取決於你如何定義你的直線方程的軸,您可能需要翻轉結果倒掛。