Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

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

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

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 - Analýza obrazu a videa 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 - Analýza obrazu a videa 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 - Analýza obrazu a videa 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 - Analýza obrazu a videa v Pythonu

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 - Analýza obrazu a videa v Pythonu

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 další lekci, Práce s videem v Pythonu a kreslení a psaní do obrázků, si ukážeme, jak načíst, přehrát a uložit video v různých formátech v knihovně OpenCV v Pythonu a také kreslení tvarů a textu do obrázků.


 

Měl jsi s čímkoli problém? Stáhni si vzorovou aplikaci níže a porovnej ji se svým projektem, chybu tak snadno najdeš.

Stáhnout

Stažením následujícího souboru souhlasíš s licenčními podmínkami

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

 

Všechny články v sekci
Analýza obrazu a videa v Pythonu
Přeskočit článek
(nedoporučujeme)
Práce s videem v Pythonu a kreslení a psaní do obrázků
Článek pro vás napsal MQ .
Avatar
Uživatelské hodnocení:
26 hlasů
Používám hlavně Python a zajímám se o Deep Learning a vše kolem.
Aktivity