29/04/2022
Vítejte ve světě mobilního vývoje a počítačového vidění! Pokud jste se kdy zajímali o to, jak integrovat pokročilé funkce zpracování obrazu a analýzy do vašich aplikací pro iOS, pak jste na správném místě. OpenCV (Open Source Computer Vision Library) je robustní a široce používaná knihovna, která nabízí tisíce optimalizovaných algoritmů pro počítačové vidění. Tento článek vás provede celým procesem – od základního propojení frameworku OpenCV s vaším projektem v Xcode, přes vytvoření jednoduché „Hello World“ aplikace, až po pokročilejší techniky klonování a sestavování OpenCV ze zdrojového kódu. Připravte se na to, že vaše iOS aplikace budou vidět svět novými očima!
Propojení OpenCV Frameworku s Xcode
Prvním a zásadním krokem k využití OpenCV ve vašem iOS projektu je správné propojení frameworku. Tento proces je naštěstí poměrně přímočarý a zvládne ho každý. Ujistěte se, že máte stažený soubor opencv2.framework, který je obvykle součástí iOS packu pro OpenCV, nebo si jej můžete sestavit sami, jak si ukážeme později.

- Vytvořte Nový Xcode Projekt: Začněte vytvořením nového projektu v Xcode. Může to být jakýkoli typ, například Single View App.
- Přístup k Nastavení Projektu: V levém panelu (Project Navigator) vyberte název vašeho projektu. Poté se v hlavním okně ujistěte, že jste na záložce TARGETS a klikněte na název vašeho cíle aplikace.
- Přidání Frameworku: Přejděte na záložku Build Phases. Zde najdete sekci Link Binary With Libraries. Klikněte na tlačítko
+. - Vyberte OpenCV Framework: V nově otevřeném okně klikněte na Add Others.... Přejděte do adresáře, kde se nachází váš soubor
opencv2.framework(například v~/Documents/opencv/ios/nebo tam, kam jste jej stáhli/sestavili), vyberte jej a klikněte na Open.
Tímto krokem jste úspěšně propojili OpenCV framework s vaším Xcode projektem. Nyní jste připraveni začít psát kód, který využívá funkce počítačového vidění.
Vaše První Aplikace: „Ahoj, OpenCV!“
Nyní, když je OpenCV propojeno, pojďme vytvořit jednoduchou aplikaci, která ověří, že vše funguje správně. Zobrazíme jednoduché upozornění „Vítejte v OpenCV“.
Příprava Projektu pro C++ Kód
OpenCV je napsáno v C++, a proto je potřeba zajistit, aby váš Objective-C (nebo Swift) projekt mohl s C++ kódem komunikovat. To se obvykle dělá tak, že se soubory, které obsahují C++ kód nebo importují C++ hlavičky, přejmenují z .m na .mm (pro Objective-C++). Pokud používáte Swift, budete potřebovat takzvaný Bridging Header.
Pro tento jednoduchý příklad budeme pracovat se souborem ViewController.m. Přejmenujte jej na ViewController.mm. Xcode se vás pravděpodobně zeptá, zda chcete nakonfigurovat Bridging Header, pokud používáte Swift – v takovém případě souhlasíte.
Importování OpenCV Hlaviček
V dřívějších verzích Xcode se často používal soubor NameOfProject-Prefix.pch pro globální importy. V moderních verzích Xcode tento soubor nemusí existovat. Nejlepší praxí je importovat hlavičky OpenCV přímo v souboru, kde je budete používat, nebo v Bridging Headeru (pro Swift).
Otevřete soubor ViewController.mm a na začátek souboru, pod stávající importy, přidejte následující řádky:
#ifdef __cplusplus #import <opencv2/opencv.hpp> #endifTato podmínka #ifdef __cplusplus zajišťuje, že kód bude kompilován pouze v prostředí C++, což zabraňuje chybám, pokud by byl soubor omylem kompilován jako čistý Objective-C.
Zobrazení Upozornění
Nyní přidáme kód pro zobrazení upozornění. Do metody viewDidLoad ve vašem ViewController.mm souboru přidejte následující řádky:
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"Ahoj!" message:@"Vítejte v OpenCV" delegate:self cancelButtonTitle:@"Pokračovat" otherButtonTitles:nil]; [alert show]; }Spusťte projekt na simulátoru nebo reálném zařízení. Pokud vše proběhlo správně, po spuštění aplikace by se mělo objevit jednoduché upozornění s textem „Vítejte v OpenCV“.
Důležité Poznámky pro Xcode 5+ a iOS 8+
S novějšími verzemi Xcode a iOS je důležité dbát na několik specifik. Jak již bylo zmíněno, soubor .pch nemusí existovat. V takovém případě importujte <opencv2/opencv.hpp> přímo do souboru .mm, který bude obsahovat kód OpenCV. Pro projekty psané v Swift je nezbytné vytvořit Bridging Header a do něj umístit importy OpenCV, které pak budou přístupné ze Swiftu. Pamatujte, že pro správnou funkci je nutné mít soubor s importem OpenCV kompilovaný jako Objective-C++ (tedy s příponou .mm).

Klíč k Pokročilé Funkcionalitě: Klonování a Sestavování OpenCV ze Zdrojového Kódu
Zatímco stažení předkompilovaného frameworku je pro začátek dostačující, někdy je potřeba větší kontrola, přístup k nejnovějším funkcím, experimentálním modulům (jako je aruco pro rozšířenou realitu) nebo optimalizace pro specifické architektury. V takovém případě je nejlepší si OpenCV sestavit ze zdrojového kódu. Tento proces vyžaduje nástroje jako Git a CMake.
Potřebné Balíčky
- CMake 2.8.8 nebo vyšší: Nástroj pro správu sestavovacího procesu.
- Xcode 4.2 nebo vyšší: Vývojové prostředí od Apple.
- Git: Systém pro správu verzí, pro stažení zdrojového kódu.
- Python: Skripty pro sestavování OpenCV pro iOS jsou napsány v Pythonu.
Získání Aktuální Verze OpenCV z Git Repozitáře
Otevřete terminál (Terminal.app na macOS) a použijte příkazy Git pro klonování repozitářů:
cd ~/ # Zde si zvolte pracovní adresář, např. mkdir my_opencv_build # cd my_opencv_build git clone https://github.com/opencv/opencv.gitPokud chcete zahrnout extra moduly OpenCV (které nejsou součástí standardního vydání a často obsahují pokročilé nebo experimentální funkce), je nutné naklonovat i repozitář opencv_contrib:
git clone https://github.com/opencv/opencv_contrib.gitUjistěte se, že oba repozitáře jsou ve stejném nadřazeném adresáři, abyste je mohli snadno propojit během sestavování.
Sestavení OpenCV ze Zdrojového Kódu pomocí CMake a Příkazové Řádky
Před sestavením se ujistěte, že máte nainstalované nástroje příkazové řádky pro Xcode. To lze ověřit a nainstalovat následujícím příkazem:
xcode-select --installNyní přejděte do adresáře, kde jste naklonovali OpenCV, a spusťte Python skript pro sestavení frameworku pro iOS:
cd ~//opencv python platforms/ios/build_framework.py ios Pro zahrnutí extra modulů (např. aruco, xfeatures2d atd.) přidejte volbu --contrib a cestu k repozitáři opencv_contrib:
python platforms/ios/build_framework.py ios --contrib ../opencv_contribVšimněte si, že ../opencv_contrib předpokládá, že opencv a opencv_contrib jsou sourozenecké adresáře ve vašem pracovním adresáři.
Pokročilé Možnosti Sestavení:
- Vyloučení specifického modulu: Pokud chcete vyloučit určitý modul (např.
optflow), použijte volbu--without <název_modulu>:python platforms/ios/build_framework.py ios --contrib ../opencv_contrib --without optflow - Specifikace architektur: Proces sestavení je poměrně dlouhý, protože standardně sestavuje OpenCV pro pět různých architektur (armv7, armv7s, arm64 pro iOS zařízení a i386, x86_64 pro simulátor). Můžete specifikovat, které architektury chcete zahrnout, pomocí
--iphoneos_archsa--iphonesimulator_archs. Například pro sestavení pouze pro arm64 (moderní iOS zařízení) a x86_64 (moderní simulátor):python platforms/ios/build_framework.py ios --contrib ../opencv_contrib --iphoneos_archs arm64 --iphonesimulator_archs x86_64
Po dokončení procesu sestavení (který může trvat desítky minut až hodiny v závislosti na vašem hardwaru a vybraných modulech) se ve vašem pracovním adresáři v podadresáři ios vytvoří soubor opencv2.framework (např. ~/my_working_directory/ios/opencv2.framework). Tento framework můžete poté přidat do svých Xcode projektů, jak je popsáno v první části tohoto článku.
| Funkce / Aspekt | Předkompilovaný Framework (např. z Releases) | Sestavení ze Zdrojového Kódu (Git) |
|---|---|---|
| Snadnost použití | Velmi snadné, stačí stáhnout a propojit. | Vyžaduje instalaci dalších nástrojů (Git, CMake, Python) a konfiguraci. |
| Dostupnost modulů | Pouze standardní moduly (bez opencv_contrib). | Včetně standardních i extra modulů (např. aruco), možnost vyloučení. |
| Aktuálnost | Verze odpovídá vydanému balíčku (může být starší). | Nejnovější vývojová verze s nejnovějšími funkcemi a opravami chyb. |
| Velikost / Optimalizace | Předkompilováno pro všechny běžné architektury, může být větší. | Možnost optimalizace a výběru konkrétních architektur, potenciálně menší framework. |
| Doba sestavení | Okamžité použití. | Může trvat desítky minut až hodiny. |
Často Kladené Otázky (FAQ)
Proč bych měl sestavovat OpenCV ze zdrojového kódu, když si ho mohu stáhnout?
Sestavení ze zdrojového kódu vám dává plnou kontrolu nad tím, jaká verze OpenCV se použije, jaké moduly budou zahrnuty (včetně opencv_contrib s pokročilými funkcemi jako aruco pro rozšířenou realitu), a pro jaké konkrétní architektury bude optimalizováno. To je klíčové pro pokročilé projekty nebo pro přístup k nejnovějším opravám a funkcím.
Můj Xcode projekt nemá soubor Prefix.pch. Kam mám umístit importy OpenCV?
V moderních Xcode projektech se soubor .pch často nepoužívá. Pokud pracujete v Objective-C++, umístěte #import <opencv2/opencv.hpp> přímo do souboru .mm, kde budete používat funkce OpenCV. Pokud vyvíjíte v Swift, budete potřebovat Bridging Header. Xcode vás obvykle vyzve k jeho vytvoření, když přidáte první Objective-C/C++ soubor do Swift projektu. Do tohoto Bridging Headeru pak umístíte importy OpenCV.
Jaké jsou minimální požadavky na verzi OpenCV pro iOS?
Tento návod je kompatibilní s OpenCV >= 3.0. Doporučuje se používat nejnovější stabilní verzi pro nejlepší výkon a bezpečnost.
Mám problémy s chybějícími moduly po sestavení OpenCV. Co dělám špatně?
Pokud vám chybí moduly, které byste očekávali (např. aruco), pravděpodobně jste nezahrnuli repozitář opencv_contrib během procesu klonování a sestavování. Ujistěte se, že jste naklonovali oba repozitáře (opencv i opencv_contrib) a při spouštění skriptu build_framework.py jste použili volbu --contrib s cestou k opencv_contrib adresáři.
Závěr
Integrace OpenCV do vašich iOS aplikací otevírá dveře k široké škále funkcí počítačového vidění, od rozpoznávání obličejů a objektů, přes sledování pohybu, až po pokročilé filtry a augmentovanou realitu. Ať už se rozhodnete pro jednodušší metodu propojení předkompilovaného frameworku, nebo se pustíte do pokročilejšího sestavování ze zdrojového kódu pro maximální flexibilitu, tento průvodce vám poskytl pevný základ. Nyní, když víte, jak propojit a spustit svou první aplikaci s OpenCV, je čas začít experimentovat a objevovat nekonečné možnosti, které tato výkonná knihovna nabízí pro vaše inovativní iOS projekty!
Chceš-li si přečíst další články podobné jako OpenCV na iOS: Propojení a První Kroky, navštiv kategorii iPhone.
