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ť:
Ú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 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:
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:
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:
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