2012-02-16 8 views

Odpowiedz

25

Coś takiego powinno działać.

from PIL import Image, ImageFilter 

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

Jeżeli to nie daje rezultatu, którego szukasz następnie spróbuj wykonawczych albo Prewitt wykrywanie krawędzi, wykrywanie krawędzi Sobel lub canny za pomocą PIL i Python i innych bibliotek zobacz sekcję question oraz następujące example .

Jeśli próbujesz zrobić detekcji cząstek/analizy, a nie tylko krawędzi wykrywania, można spróbować użyć py4ij wywołać metodę ImageJ połączyć dać się spodziewać tego samego rezultatu, lub spróbować innej biblioteki Particle Analiza Pythona EMAN przemian cię umie napisać algorytm detekcji cząstek za pomocą PIL, SciPy i NumPy.

+0

Witam, Zdjęcia są w kolorze, a nawet gdy skaluję je na szaro i uruchamiam filtry, to nie działa dobrze, ponieważ chcę tylko obrysu kształtu jabłka, czy to możliwe? To jest coś podobnego do metody imageJ opisanej w rsbweb.nih.gov/ij/docs/pdfs/examples.pdf. Dzięki – user1212200

+1

@ Appleman1234, dziękuję bardzo za odniesienie do mojego postu. Hej, możesz zaimportować moduły wykrywania krawędzi i uruchomić je, aby znaleźć same krawędzie. Dane wyjściowe będą numpy ndarray, ale można przekonwertować na obraz PIL za pomocą im = Image.fromarray (imarray) – Vishwanath

+0

@Appleman jest możliwe, aby podzielić obraz na komponenty na podstawie FIND_EDGES? – user1658296

4

Jeśli obiekt i tło są dość dobrze kontrastują

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) 

jeśli wyższy kontrast jest w jeden (z 3 kolorów), można podzielić obraz na pasmach zamiast przekształcenie go w skali szarości.

Jeżeli zdjęcie lub tło jest dość skomplikowane, bardziej wyrafinowane przetwarzanie będą wymagane

Powiązane problemy