Można przekonwertować obrazek na rgb, który jest (czerwony, niebieski, zielony). Na przykład, uzyskać obraz stąd:
https://github.com/panditarevolution/PIL_Play/blob/master/blackline.jpg
import PIL
# The conversion should work equally with a bitmap
img = PIL.Image.open("blackline.jpg")
rgb_im = img.convert('RGB')
rgb_im.size
ta zwraca rozmiar w liczbie pikseli: (680,646)
. Możesz zapytać o kolor pojedynczych pikseli za pomocą rgb_im.getpixel((x,y))
, gdzie x
idzie w poziomie i y
idzie w pionie, od góry do dołu.
więc sprawdzić, czy pierwsza linia jest cały czarny (lub głównie czarny), można zrobić coś takiego:
# Get the first row rgb values
first_row = [rgb_im.getpixel((i,0)) for i in range(rgb_im.size[0])]
# Count how many pixels are black. Note that jpg is not the cleanest of all file formats.
# Hence converting to and from jpg usually comes with some losses, i.e. changes in pixel values.
first_row.count((0,0,0)) # --> 628
len(first_row) #--> 680
628/680 = 92% punktów w pierwszym rzędzie są czarne.
Sprawdźmy wszystkie występujące kolory w pierwszym rzędzie z set(first_row)
który daje mi:
{(0, 0, 0),
(0, 0, 2),
(0, 1, 0),
(1, 0, 0),
(1, 1, 1),
(2, 2, 0),
(2, 2, 2),
(4, 4, 2),
(4, 4, 4),
(5, 5, 3),
(5, 7, 6),
(6, 6, 4),
(7, 7, 5),
(14, 14, 12),
(14, 14, 14),
(35, 36, 31),
(52, 53, 48),
(53, 54, 46),
(63, 64, 59),
(64, 65, 60),
(66, 67, 61),
(68, 69, 61),
(76, 77, 71),
(79, 82, 65),
(94, 96, 83),
(96, 98, 87),
(99, 101, 90),
(101, 103, 92)}
Więc nawet jeśli istnieje około 8% bez czarnych pikseli, możemy zobaczyć, że większość z nich to monochromatyczne ładna, tj odcienie szarego; wartości rgb są dość blisko siebie dla każdego koloru.
Jest dobry tutorial PIL tutaj: http://effbot.org/imagingbook/
Podstawowy przegląd można znaleźć tutaj: http://infohost.nmt.edu/tcc/help/pubs/pil.pdf
Jako bonus, a nie wiedząc, czy to jest dobre czy nie (i czy obejmuje ona PIL), dostępny jest darmowy projekt "Programowanie Computer Vision with Python" dostępny tutaj: http://programmingcomputervision.com/
Hej tam, zaktualizowałem swoją odpowiedź za pomocą przykładowego kodu. Twoje zdrowie! – pandita