Vianoce v ITnetwork sú tu! Dobí si teraz kredity a získaj až 80 % extra kreditov na e-learningové kurzy ZADARMO. Zisti viac.
Hľadáme nové posily do ITnetwork tímu. Pozri sa na voľné pozície a pridaj sa k najagilnejšej firme na trhu - Viac informácií.

1. diel - Úvod do analýzy obrazu a videa v Pythone

Zdravím vás pri prvej lekcie Python kurzu, ktorý sa venuje analýze obrazu a videa. V tomto kurze sa zoznámime s knižnicami OpenCV a PIL pre prácu s obrazom v Pythone, numpy pre prácu s číslami a matplotlib pre analýzu. Cieľom kurzu je naučiť vás pracovať s obrazom a videom v Pythone a nakoniec sa dozvedieť aj niečo málo o strojovom učení.

Inštalácia

Odporúčam nainštalovať Anaconda / Miniconda distribúciu Pythone, pretože inštalácia knižnice OpenCV je tak jednoduchšie a package manager Conda sa postará o všetky požiadavky knižnice.

Najskôr si nainštalujeme knižnicu numpy, tú pravdepodobne budete mať už nainštalovanú:

py -m pip install numpy

Ak používate Anaconda / MiniConda distribúciu Pythone, upravte si príkazy pre inštalácie ako:

conda install numpy

Ďalej si nainštalujeme knižnicu matplotlib, ktorá slúži pre analýzu a vizualizáciu dát:

py -m pip install matplotlib

Nainštalujeme knižnicu PIL:

py -m pip install Pillow

A nakoniec tu najdôležitejšie knižnicu, ktorou je OpenCV, čo je knižnica napísaná v C a C ++.

  • Ak máte distribúciu Anaconda alebo Miniconda, zadajte: conda install -c conda-forge opencv
  • Ak túto distribúciu nepoužívate, nainštalujte ako py -m pip install opencv-python, ale môže tu nastať problém s požiadavkami

Ak inštalácia knižnice OpenCV prebehla úspešne, neuvidíte žiadnu červenú hlášku. Pre istotu si skúsime knižnicu v príkazovom riadku naimportovať:

Import knižnice OpenCV v Pythone - Analýza obrazu a videa v Pythone

Úvod

Výborne, ak ste sa dostali až sem, všetko vám funguje ako má a ste pripravení. V tejto lekcii budeme pracovať s obrázkom nižšie. Ak chcete použiť nejaký vlastné, nič vám v tom nebráni.

Obrázok lietadla v Pythone - Analýza obrazu a videa v Pythone

Obrázok si uložte do zložky so svojím projektom ako súbor letadlo.jpg.

Knižnica OpenCV

Najskôr si obrázok otvoríme a zobrazíme pomocou OpenCV:

import cv2
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image

img = cv2.imread("letadlo.jpg")
cv2.imshow("obrazek", img)
cv2.waitKey()
cv2.destroyAllWindows()

Ako prvý si importujeme všetky knižnice, s ktorými budeme v tejto lekcii pracovať. Potom si otvoríme obrázok funkcií cv2.imread(obrazek, parametr). Ak parameter neuvedieme, použije sa IMREAD_COLOR, ktorý nám otvorí obrázok bez alfa kanála (transparentnosti). Ak by sme z nejakého dôvodu chceli alfa kanál použiť ako parameter, použijeme IMREAD_UNCHANGED. Obrázok môžeme tiež otvoriť s parametrom IMREAD_GRAYSCALE, vtedy bude šedý. Obrázok si zobrazíme funkcií cv2.imshow(nazev_okna, obrazek) a počkáme na stlačenie klávesy pomocou cv2.waitKey(zpoždění - pokud přehráváme video, je potřeba 1 a více). Potom všetky okná zavrieme funkcií cv2.destroyAllWindows().

Knižnica PIL

Teraz si obrázok skúsime otvoriť pomocou knižnice PIL:

img = Image.open("letadlo.jpg")
img = np.array(img)
cv2.imshow("obrazek", img)
cv2.waitKey()
cv2.destroyAllWindows()

Otvorenie prevedieme funkcií Image.open(obrazek). Potom obrázok musíme previesť na numpy array pomocou np.array(list), čo je list v knižnici pre prácu s číslami. S tou potom pracuje OpenCV. Obrázok zobrazíme a môžeme si všimnúť, že má trochu iné farby, pretože knižnica OpenCV pracuje s BGR (blue, green, red) a ak nahráme obrázok v knižnici PIL, ktorá pracuje pre zmenu s RGB, stane sa toto:

Načítanie obrázka pomocou knižnice PIL v Pythone - Analýza obrazu a videa v Pythone

Aby sme problému s farbami zabránili, musíme pred zobrazením obrázka previesť obrázok na BGR funkcií cv2.cvtColor(obrazek, parametr):

img = Image.open("letadlo.jpg")
img = np.array(img)
img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR)
cv2.imshow("obrazek", img)
cv2.waitKey()
cv2.destroyAllWindows()

A výsledok:

Načítanie RGB obrázka knižnicou PIL pre Python - Analýza obrazu a videa v Pythone

Teraz vidíme farby, ktoré obrázok naozaj má.

Knižnica matplotlib

Nakoniec aplikujeme parameter IMREAD_GRAYSCALE a obrázok zobrazíme v knižnici matplotlib, ktoré nastavíme parameter cmap čiže ColorMap na "gray", aby sa nám šedý obrázok zobrazil. Potom vykreslíme červenú čiaru s hrúbkou 12 do grafu pomocou funkcie plt.plot(x, y, barva, **kwargs):

img = cv2.imread("letadlo.jpg", cv2.IMREAD_GRAYSCALE)
plt.imshow(img, cmap = "gray")
plt.plot([800,300],[400,200], "red", linewidth = 12)
plt.show()

výsledok:

Graf v Pythone pomocou knižnice matplotlib - Analýza obrazu a videa v Pythone

Ak sa vám knižnica matplotlib alebo PIL nepáči, bohato vám stačí len OpenCV. Tieto znalosti sa nám však hodí, až sa v neskorších lekcií budeme venovať vizualizáciu dát. Keby ste chceli obrázok uložiť, použijete funkciu cv2.imwrite(nazev, obrazek).

Zdrojový kód nájdete na stiahnutie v prílohe článku. V budúcej lekcii, Práca s videom v Pythone a kreslenie a písanie do obrázkov , si ukážeme, ako pracovať s videom, zobraziť jednotlivé snímky a nakoniec uložiť video vo formáte MP4.


 

Mal si s čímkoľvek problém? Stiahni si vzorovú aplikáciu nižšie a porovnaj ju so svojím projektom, chybu tak ľahko nájdeš.

Stiahnuť

Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami

Stiahnuté 67x (383.78 kB)
Aplikácia je vrátane zdrojových kódov v jazyku Python

 

Všetky články v sekcii
Analýza obrazu a videa v Pythone
Preskočiť článok
(neodporúčame)
Práca s videom v Pythone a kreslenie a písanie do obrázkov
Článok pre vás napísal MQ .
Avatar
Užívateľské hodnotenie:
2 hlasov
Používám hlavně Python a zajímám se o Deep Learning a vše kolem.
Aktivity