Java týden Předvánoční slevová akce
Využij předvánočních slev a získej od nás 20 % bodů zdarma! Více zde
Pouze tento týden sleva až 80 % na Java e-learning!

Lekce 1 - Úvod do analýzy obrazu a videa v Pythonu

Unicorn College Tento obsah je dostupný zdarma v rámci projektu IT lidem.
Vydávání, hosting a aktualizace umožňují jeho sponzoři.

Zdravím vás u první lekce Python kurzu, který se věnuje analýze obrazu a videa. V tomto kurzu se seznámíme s knihovnami OpenCV a PIL pro práci s obrazem v Pythonu, numpy pro práci s čísly a matplotlib pro analýzu. Cílem kurzu je naučit vás pracovat s obrazem a videem v Pythonu a nakonec se dozvědět i něco málo o strojovém učení.

Instalace

Doporučuji nainstalovat Anaconda/Miniconda distribuci Pythonu, protože instalace knihovny OpenCV je tak jednodušší a package manager conda se postará o všechny požadavky knihovny.

Nejdříve si nainstalujeme knihovnu numpy, tu nejspíše budete mít již nainstalovanou:

py -m pip install numpy

Pokud používáte Anaconda/MiniConda distribuci Pythonu, upravte si příkazy pro instalace jako:

conda install numpy

Dále si nainstalujeme knihovnu matplotlib, která slouží pro analýzu a vizualizaci dat:

py -m pip install matplotlib

Nainstalujeme knihovnu PIL:

py -m pip install Pillow

A nakonec tu nejdůležitější knihovnu, kterou je OpenCV, což je knihovna napsaná v C a C++.

  • Pokud máte distribuci Anaconda nebo Miniconda, zadejte: conda install -c conda-forge opencv
  • Pokud tuto distribuci nepoužíváte, nainstalujte jako py -m pip install opencv-python, ale může zde nastat problém s požadavky
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!

Pokud instalace knihovny OpenCV proběhla úspěšně, neuvidíte žádnou červenou hlášku. Pro jistotu si zkusíme knihovnu v příkazovém řádku naimportovat:

Import knihovny OpenCV v Pythonu

Úvod

Výtečně, pokud jste se dostali až sem, vše vám funguje jak má a jste připraveni. V této lekci budeme pracovat s obrázkem níže. Pokud chcete použít nějaký vlastní, nic vám v tom nebrání.

Obrázek letadla v Pythonu

Obrázek si uložte do složky se svým projektem jako soubor letadlo.jpg.

Knihovna OpenCV

Nejdříve si obrázek otevřeme a zobrazíme pomocí 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()

Jako první si importujeme všechny knihovny, s kterými budeme v této lekci pracovat. Poté si otevřeme obrázek funkcí cv2.imread(obrazek, parametr). Pokud parametr neuvedeme, použije se IMREAD_COLOR, který nám otevře obrázek bez alfa kanálu (průhlednosti). Pokud bychom z nějakého důvodu chtěli alfa kanál použít jako parametr, použijeme IMREAD_UNCHANGED. Obrázek můžeme také otevřít s parametrem IMREAD_GRAYSCALE, tehdy bude šedý. Obrázek si zobrazíme funkcí cv2.imshow(nazev_okna, obrazek) a počkáme na stisknutí nějaké klávesy pomocí cv2.waitKey(zpoždění - pokud přehráváme video, je potřeba 1 a více). Poté všechna okna zavřeme funkcí cv2.destroyAllWindows().

Knihovna PIL

Nyní si obrázek zkusíme otevřít pomocí knihovny PIL:

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

Otevření provedeme funkcí Image.open(obrazek). Poté obrázek musíme převést na numpy array pomocí np.array(list), což je list v knihovně pro práci s čísly. S tou poté pracuje OpenCV. Obrázek zobrazíme a můžeme si všimnout, že má poněkud jiné barvy, jelikož knihovna OpenCV pracuje s BGR (blue, green, red) a pokud nahrajeme obrázek v knihovně PIL, která pracuje pro změnu s RGB, stane se toto:

Načtení obrázku pomocí knihovny PIL v Pythonu

Abychom problému s barvami zabránili, musíme před zobrazením obrázku převést obrázek na BGR funkcí 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ýsledek:

Načtení RGB obrázku knihovnou PIL pro Python

Nyní vidíme barvy, které obrázek opravdu má.

Knihovna matplotlib

Nakonec aplikujeme parametr IMREAD_GRAYSCALE a obrázek zobrazíme v knihovně matplotlib, které nastavíme parametr cmap neboli ColorMap na "gray", aby se nám šedý obrázek zobrazil. Poté vykreslíme červenou čáru s tloušťkou 12 do grafu pomocí funkce 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ýsledek:

Graf v Pythonu pomocí knihovny matplotlib

Pokud se vám knihovna matplotlib nebo PIL nelíbí, bohatě vám stačí pouze OpenCV. Tyto znalosti se nám ovšem hodí, až se v pozdějších lekcí budeme věnovat vizualizaci dat. Kdybyste chtěli obrázek uložit, použijete funkci cv2.imwrite(nazev, obrazek).

Zdrojový kód najdete ke stažení v příloze článku. V příští lekci, Práce s videem v Pythonu a kreslení a psaní do obrázků, si ukážeme, jak pracovat s videem, zobrazit jednotlivé snímky a nakonec uložit video ve formátu MP4.


 

Stáhnout

Staženo 10x (383.78 kB)
Aplikace je včetně zdrojových kódů v jazyce Python

 

 

Aktivity (4)

 

 

Komentáře

Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zatím nikdo nevložil komentář - buď první!