2012-02-16 157 views

回答

25

像這樣的東西應該工作。

from PIL import Image, ImageFilter 

image = Image.open('your_image.png') 
image = image.filter(ImageFilter.FIND_EDGES) 
image.save('new_name.png') 

如果不給你你正在尋找的,那麼你嘗試實現要麼普魯伊特邊緣檢測,Sobel邊緣檢測或Canny邊緣檢測使用PIL和Python等圖書館見相關question及以下example結果。

如果你正在嘗試做的粒子檢測/分析,而不僅僅是邊緣檢測,你可以嘗試使用py4ij給你打電話鏈接ImageJ的方法給你所期望的結果相同,或嘗試其它顆粒分析Python庫EMAN交替你可以使用PIL,SciPy和NumPy編寫粒子檢測算法。

+0

嗨, 照片是彩色的,甚至當我灰化他們和運行過濾器它不能正常工作,因爲我只是想要蘋果形狀的輪廓,這有可能嗎? 它類似於rsbweb.nih.gov/ij/docs/pdfs/examples.pdf中描述的imageJ方法。 謝謝 – user1212200 2012-02-17 14:53:30

+1

@ Appleman1234,非常感謝你提及我的文章。嘿,你可以導入Canny邊緣檢測模塊並運行它來單獨查找邊緣。輸出將是一個numpy的ndarray,但你可以使用im = Image.fromarray(imarray) – Vishwanath 2012-02-20 14:48:46

+0

@Appleman將圖像轉換爲基於FIND_EDGES的組件分解成PIL圖像? – user1658296 2016-08-31 07:46:05

4

如果你的對象和背景都相當不錯對比

from PIL import Image 
image = Image.open(your_image_file) 
mask=image.convert("L") 
th=150 # the value has to be adjusted for an image of interest 
mask = mask.point(lambda i: i < th and 255) 
mask.save(file_where_to_save_result) 

如果更高的對比度是在一個(3種顏色),您可將圖像分割成多個頻帶,而不是將其轉換爲灰度。

如果圖像或背景是相當複雜的,更復雜的處理將需要