Video: Intermediairdagen 2017: e-Overheid - Het digitale journaal 2025
Ongestructureerde gegevensbestanden bestaan uit een reeks bits. Het bestand scheidt de bits op geen enkele manier van elkaar. Je kunt niet simpelweg in het bestand kijken en een structuur zien omdat er niets te zien is. Ongestructureerde bestandsformaten vertrouwen erop dat de bestandsgebruiker weet hoe de gegevens moeten worden geïnterpreteerd.
Elke pixel van een afbeeldingsbestand kan bijvoorbeeld uit drie 32-bits velden bestaan. Wetende dat elk veld 32 bits is, is aan jou. Een koptekst aan het begin van het bestand kan aanwijzingen geven over de interpretatie van het bestand, maar toch is het aan u om te weten hoe u met het bestand kunt werken.
Dit voorbeeld laat zien hoe u met een afbeelding kunt werken als een ongestructureerd bestand. De voorbeeldafbeelding is een openbaar domeinaanbod van commons. wikimedia. org. Om met afbeeldingen te werken, hebt u toegang nodig tot de scikit-image-bibliotheek, die een gratis verzameling algoritmen is die worden gebruikt voor beeldverwerking. Hier is een tutorial voor deze bibliotheek.
De eerste taak is om het beeld op het scherm te kunnen weergeven met behulp van de volgende code. (Deze code kan enige tijd vergen om te worden uitgevoerd. De afbeelding is gereed wanneer de bezig-indicator verdwijnt uit het tabblad IPython Notebook.)
van skimage. io imread
importeren uit skimage. transformeer import resize
van matplotlib import pyplot as plt
importeer matplotlib. cm als cm
example_file = (" // upload. wikimedia. org /" +
"wikipedia / commons / 7 / 7d / Dog_face. png")
image = imread (example_file, as_grey = True)
plt. imshow (afbeelding, cmap = cm, grijs)
plt. show ()
De code begint met het importeren van een aantal bibliotheken. Vervolgens wordt een tekenreeks gemaakt die naar het voorbeeldbestand verwijst en deze plaatst in
example_file
. Deze tekenreeks maakt deel uit van de methode
imread ()
, samen met
as_grey
, die is ingesteld op
True
. Het
as_grey
argument vertelt Python om kleurenafbeeldingen in grijstinten te veranderen. Afbeeldingen die al in grijswaarden zijn, blijven zo.
Nu dat er een afbeelding is geladen, is het tijd om deze weer te geven (maak hem klaar om op het scherm weer te geven.) De
imshow ()
-functie voert de rendering uit en gebruikt een grijsschaalkleurenkaart. > show ()
functie toont eigenlijk
afbeelding
voor u.
De afbeelding verschijnt op het scherm nadat u deze hebt gerenderd en weergegeven.
In [*]:
invoer geeft aan dat de code nog steeds actief is en u niet verder kunt gaan naar de volgende stap.) De handeling van het sluiten van de afbeelding beëindigt het codesegment. heb nu een afbeelding in het geheugen en misschien wilt u er meer over weten.Wanneer u de volgende code uitvoert, ontdekt u het afbeeldingstype en de afmeting:
afdrukken ("gegevenstype:% s, vorm:% s"%
(type (afbeelding), afbeelding.))
De uitvoer van deze aanroep vertelt u dat het afbeeldingstype een
nummer is. ndarray
en dat de afbeeldingsgrootte 90 bij 90 pixels is. De afbeelding is eigenlijk een array van pixels die u op verschillende manieren kunt manipuleren. Als u bijvoorbeeld de afbeelding wilt bijsnijden, kunt u de volgende code gebruiken om de afbeeldingsarray te bewerken:
image2 = afbeelding [5: 70, 0: 70]
plt. imshow (afbeelding2, cmap = cm grijs)
plt. Show ()
Het
numpy. ndarray
in
image2
is kleiner dan die in
afbeelding
, dus de uitvoer is ook kleiner. Typische resultaten worden hieronder getoond. Het doel van het bijsnijden van de afbeelding is om deze een specifieke grootte te geven. Beide afbeeldingen moeten voor u dezelfde grootte hebben om ze te analyseren. Bijsnijden is een manier om ervoor te zorgen dat de afbeeldingen de juiste grootte hebben voor analyse.
Als u de afbeelding bijsnijdt, wordt deze verkleind.
image3 = formaat wijzigen (afbeelding2, (30, 30), modus = "dichtstbijzijnde")
plt. imshow (image3, cmap = cm. grijs)
print ("gegevenstype:% s, vorm:% s"%
(type (image3), image3. shape))
De uitvoer van de < print ()
functie vertelt u dat de afbeelding nu 30 pixels bij 30 pixels groot is. Je kunt het vergelijken met elke afbeelding met dezelfde afmetingen.
Nadat u alle afbeeldingen in de juiste grootte hebt geplaatst, moet u ze plat maken. Een gegevenssetrij is altijd een enkele dimensie, geen twee dimensies. De afbeelding is momenteel een array van 30 pixels bij 30 pixels, dus u kunt deze niet laten opnemen in een gegevensset. De volgende code vlakt
image3
af zodat het een array van 900 elementen wordt die is opgeslagen in
image_row
:
image_row = image3. flatten ()
print ("gegevenstype:% s, vorm:% s"%
(type (image_row), image_row. shape))
Merk op dat het type nog steeds een
nummer is. ndarray
. U kunt deze array aan een dataset toevoegen en vervolgens de dataset gebruiken voor analysedoeleinden. De grootte is 900 elementen, zoals verwacht.
