Radek Chalupa   konzultace a školení programování, vývoj software na zakázku

Začínáme programovat s OpenCV - příprava prostředí ve Windows

26.5.2018

Ve Windows máme více možností jak získat a nainstalovat knihovnu OpenCV, podrobnosti najdete samozřejmě na webu OpenCV. Zde zmíním 2 asi nejjednodušší možnosti. Můžeme využít správce knihoven C++ vcpkg od Microsoftu, o kterém jsem zde psal nedávno. Standardní možností je stažení instalátoru z webu OpenCV, kde najdeme „windows self-extracting archive“, což je exe soubor který po spuštění rozbalí vše potřebné do zvolené složky. Doporučuji pro jistotu požít cestu bez mezer, například jednoduše c:/OpenCV.

Ve Windows doporučuji programovat v MS Visual Studiu (Community verze zdarma), proto se zde budu zabývat nastavením pro toto vývojové prostředí. V samotných Windows je třeba vytvořit proměnnou prostředí nazvanou OPENCV_DIR a nastavit ji na hodnotu (dále budu předpokládat, že instalační adresář knihovny je c:/OpenCV) „c:/OpenCV/build/x64/vc15/bin. Podotýkám že číst „vc15“ je pro aktuálně nejvyšší podporovanou verzi Visual Studia, v současné době ze najdeme také podsložku vc14 a v budoucnu samozřejmě může být vyšší verze.

Nyní již k samotnému projektu Visual Studia. Samozřejmě půjde o projekt C++ (může to být konzolová aplikace (se vstupní funkcí main) nebo „windows aplikace“ (se vstupní funkcí WinMain). V nastavení projektu přejdeme na „VC++ Directories“ a do cest „include“ přidáme „c:/OpenCV/build/include/“ a do cest „library directories“ přidáme „c:/OpenCV/build/x64/vc15/lib/“. Ve zdrojovém kódu (nejlépe do hlavičkového souboru předkompilovaných hlaviček – obvykle stdafx.h) přidáme:

#include <opencv2/opencv.hpp>
#ifdef _DEBUG
#pragma comment (lib, „opencv_world341d.lib“)
#else
#pragma comment (lib, „opencv_world341.lib“)
#endif

Nyní můžeme vše vyzkoušet založením konzolové aplikace a po přidání výše uvedeného přidáme tento kód do funkce main.

int main()
{
        cv::Mat img = cv::imread("kozel.jpg");
        if (img.empty())
                return -1;
        cv::namedWindow("okno_opencv", cv::WINDOW_AUTOSIZE);
        cv::imshow("okno_opencv", img);
        cv::waitKey(0);
        cv::destroyWindow("okno_opencv");
        return 0;
}

Samozřejmě cestu k souboru s obrázkem v prvním řádku si nahradíte vlastním existujícím souborem.

Uvedený kód zobrazí ve vlastním okně zadaný soubor v některém z podporovaných grafických formátů a po stisku klávesy okno zavře a pokračuje k ukončení funkce main. Kódem a jeho vysvětlením se budeme zabývat v dalších článcích. Nyní ještě k podmínkám běhu aplikace. Vytvořená aplikace (exe soubor) potřebuje ke svému běhu mít „na cestě“ runtimové (dll) knihovny OpenCV. Tyto samozřejmě najdeme v instalační složce c:/OpenCV, konkrétně ve složce „c:/OpenCV/build/x64/vc15/bin“. Nyní máme 2 možnosti:

  • zkopírovat tyto dll knihovny do stejné složky kde je exe soubor

  • přidat do proměnné prostředí PATH uvedenou cestu, tj. c:/OpenCV/build/x64/vc15/bin