Sunteți pe pagina 1din 21

PROIECT DE DIPLOM

Iasi
2016

Implementarea unui software de humandetection n librria OpenCV cu ajutorul


IDE-ului Visual C++

Iasi
2016

Cuprins:
Capitolul 1: Introducere .. 4
Capitolul 2: Computer Vision . 5
2.1 Definirea Computer Vision? . 5
2.2 Domenii nrudite.... 6
2.3 Aplicaii n C.V. .... 8
2.4 Metodele de sistem C.V. ... 11
Capitolul 3: OpenCV .. 12
3.1 Definirea OpenCV? . 12
3.2 Istoria OpenCV ... 12
3.3 Limbaje de programare . 13
Capitolul 4: IDE-urile .. 17
4.1 Definirea IDE? .. 17
4.2 Istoria IDE . 18
4.3 Clasificarea IDE ..... 20
Capitolul 5: Implementarea human-detection ... 21
5.1 Instalarea librriei OpenCV pe sistemul de operare Linux 21
5.2 Instalarea librriei OpenCV pe sistemul de operare Windows .. 23
5.3 Setarea IDE-ului pentru sistemul de operare Linux ... 23
Capitolul 6: Bibliografie .... 25

Introducere
Computer vision este un domeniu n care se includ metode pentru a obine, analiza, procesa i
nelege imaginile n general date de dimensiuni mari din lumea real pentru a le transforma
numeric sau informativ de tip simbolic. Tema acestui domeniu fiind defapt transformarea sau
duplicarea vederii omului ntr-un sistem neles de componente electronice (calculatoare,
telefoane mobile), prin urmare se pot interpreta obiectele din lumea real de catre aceste
componente.
Am ales acest domeniu ca i tem de lucru deoarece tot timpul va fi loc de mbuntire, nici
una din aplicaiile deja existente nu au precizie sut la sut la procesarea pozelor sau
videoclipurilor, dei tind spre procente din ce n ce mai mari. Este un domeniu captivant i cu
multe aplicaii practice din toate domeniile de lucru, pot exemplifica unele din aceste domenii:
Securitate n anumite magazine, supermarket-uri sau chiar i la locuine montarea unei simple
camere de filmat legate de un pc sau un server poate duce la depistarea posibililor infractori sau
accidente cum ar fi incedii sau inundaii, serverul mai departe avertiznd proprietarul printr-un
mail sau sms de aciunea n desfurare.
Transport auto Monitorizarea mainilor care ntrec limitele de vitez sau circul
neregulamentar, un software poate fi fcut pentru a capta numerele de nmatriculare ale acestora.
3

Industrie Automatizarea unei linii de producie ntr-o fabric cu roboi simpli care au un
software de computer vision ce permite depistarea unor defeciuni n piesele ce se produc, sau un
program care din nou, cu nite camere de filmat montate la intrarea n firm poate depista fiecare
muncitor ce intr sau iese, eliminnd cu totul pontajul ca atare.
Robotic Construirea unor drone cu software-uri simple de computer vision care au ca scop
nelegerea mediului nconjurtor, pentru ca drona s poat naviga mai eficient( ex: n aer sau pe
uscat).
Multimedia Pe site-urile de socializare unul dintre cele mai recunoscute aspecte ar fi face
recognition-ul din poze sau videoclipuri, care este la fel un software bazat pe algoritmii din
computer vision.
Din puinele aplicaii practice enumerate, se pot vedea nbuntiri n viaa de zi cu zi sau
eficiena n timp i costuri n industrie datorita folosirii unora dintre aceste software-uri.

Capitolul 2:
Computer Vision
2.1

Definirea Computer Vision

Computer vision este un domeniu n care se includ metode pentru a obine, analiza, procesa i
nelege imaginile n general date de dimensiuni mari din lumea real pentru a le transforma
numeric sau informativ de tip simbolic. Tema acestui domeniu fiind defapt transformarea sau
duplicarea vederii omului ntr-un sistem neles de componente electronice (calculatoare,
telefoane mobile), prin urmare se pot interpreta obiectele din lumea real de ctre aceste
componente.
Interpretarea imaginilor poate fi caracterizat de decodarea blocurilor de informaie simbolic
din datele din imagini cu ajutorul unor module de geometrie, trigonometrie, fizic, statistic i
teoria nvrii.
Computer vision ar putea fi descris i ca o platform pentru automatizarea i integrarea unui
numr mare de procese i reprezentri pentru percepia vizual.
Ca i disciplin teoretic computer vision prescurtat i C.V. are ca i scop cercetarea teoriilor n
spatele sistemelor artificiale c extrag informaiile i datele din imagini. Datele de imagine pot
lua multe forme de exemplu: secvene video de tip videoclip sau film, vederi din camera de
filmat multiple, poze sau wallpaper-uri, date multidimensionale din aparaturile de tip medical sau
din domeniul industrial, scanner. Sub-domeniile ale C.V. include detectarea de evenimente,
reconstrucia scenelor, track-ing video, detectarea obiectelor din scen, nvarea, indexarea,
estimarea micrilor i aciunilor fizice, estimarea vitezelor i acceleraiilor obiectelor din scen,
rotaia i transformarea imaginilor.
n imaginea de mai jos se poate observa un software care extrage cteva tipuri de obiecte dintrun cadru.

2.2

Domenii nrudite

Domeniile ce includ inteligena artificial cu planificarea automatizat sau pentru


sistemele robotice care pot naviga ntr-un anumit mediu. Este nevoie de detaliu complex despre
aceste medii pentru ca un robot automatizat s poat naviga eficient. Un astfel de detaliu poate fi
aprovizionat de un sistem computer vision care joac un rol de senzor vizual pentru
aprovizionarea datelor de care robotul are nevoie.
Inteligena artificial i computer vision mai au un domeniu nrudit i anume recunoaterea
pattern-urilor sau a similaritilor. n consecin de multe ori computer vision este vzut ca un
domeniu component n inteligena artificial sau a tiinei calculatoarelor n general(computer
science).
Fizica solidelor este un alt exemplu de domeniu nrudit sau apropiat de computer vision.
Majoritatea sistemelor computer vision din acest domeniu se bazeaz pe senzori de imagine, care
detecteaz radiaii electromagnetice care sunt deseori detectabile sub lumina infra-rosie.
Modul n care lumina acioneaz asupra suprafeelor este explicat fizic alturi de
comportamentul optic al acestuia. Multe alte probleme de msurtori n domeniul fizic pot fi
ajutate i interpretate de computer vision cum ar fi micarea fluidelor.
Un alt domeniu care joac un rol important n computer vision ar fi neuro-biologia, specific
studiului sistemelor vizuale. n ultimul secol au fost multe cercetri asupra ochiului uman sau a
diferitor animale, neuronilor i structura creierului. Aceste cercetri au dezvluit mai n detaliu
cum funcioneaz sistemul visual pentru a nelege mai bine cum se pot rezolva diferite probleme
n computer vision. Tot aceste rezultate ale cercetrilor au dus la un sub-domeniu n computer
5

vision care ncearc s construiasc sisteme de module care s replice sau s reproduc
comportamentul unui sistem biologic. Putem numerota unele din aceste module care au avut
rdcini n neuro-biologie: neurat net, deep learning bazat pe imagini i analiza si clasificarea.
Un alt domeniu nrudit ar fi procesarea semnalelor. Multe metode pentru procesarea
semnalelor, deobicei semnalele temporale sau semnalele de o variabil, pot fi extinse pn la
semnalele de dou variabile. Acesta este din nou un sub-domeniu n computer vision.
Pe lng domeniile menionate mai sus, multe dintre studiile i modulele din computer vision
pot fi descrise ca fiind pur matematice. De exemplu multe metode se bazeaz pe statistic,
optimizare sau geometrie. O mare parte din acest domeniu este devotat nspre implementarea
aspectelor n computer vision; cum metodele existente pot fi realizate n diferite combinaii de tip
software sau hardware; sau cum aceste metode pot s beneficieze de viteza de procesare mai
ridicat fr s piard performan.
Aceste domenii sunt n strns legtur cu computer vision dei cele mai apropiate
caracteristici fiind, procesarea imaginilor i analiza lor. Sunt distane diferite din fiecare domeniu
fa de computer vision i tehnicile care acoper cererile din fiecare domeniu. Computer vision
n anumite feluri este inversul graficii de calculator sau computer graphics. n timp ce grafica de
calculator produce imagini din modele 3D, computer vision produce modele 3D din imagini.
Deasemenea este i un domeniu de mijloc ntre cele dou, un domeniu mai nou aparut numit
augmented reality.
n imaginea de mai jos este prezentat o schi grafic a fiecrui domeniu i nrudirea sa cu
computer vision, fiecare domeniu principal este ncercuit iar lng el este un subdomeniu:

2.3 Aplicaii n C.V.


Domeniul de aplicabilitate al computer vision-lui este destul de mare avnd n vedere
domeniile nrudite sau apropiate ale lui. Printre cele mai importante putem enumera:

1) Controlul de proces al unui robot industrial


Un robot indrustrial este un sistem robotizat pentru fabricaie. Roboii industriali sunt
programabili, automatizai, i capabili de micarea pe dou sau mai multe axe. Cei mai cunoscui
roboi din acest domeniu sunt roboii cu articulaii. Percepia pieselor cu care ei lucreaz pot fi
interpretate de un sistem computer vision

2) Navigaia unui vehicul autonom sau al unui robot


Un vehicul autonom implic folosirea mecatronicii i a inteligenei artificiale i folosirea unui
sistem operator pentru navigarea sa n spaiu. Un astfel de software poate fi de tip computer
vision.

3) Interaciunea ntre om i calculator


4) Organizarea informaiei pentru indexarea bazelor de date sau a
secvenelor de imagini
5) Detectarea evenimentelor pentru supravegherea video
Unul dintre exemple ar fi detectarea persoanelor care intr ntr-un supermarket.
8

6) Modelarea obiectelor sau a mediilor, din imaginile medicale sau


modelarea topografic

Unul din cele mai proeminente domenii enumerate este domeniul medical, unde computer
vision are rolul de a procesa i analiza imaginile cu date medicale pentru a extrage un diagnostic
pentru diferii pacieni. Din acest domeniu datele procesate sunt date de ctre: imagini
9

microscopice, radiografii, angiografii, imagini ultrasonice sau termografii. Un tip de informaii


ce pot fi extrase din imagini ar putea fi: fracturi la diferite nivele, tumori, rni interne etc. Alte
aplicaii n domeniul medical ar putea fi mbuntirea acestor imagini n calitate i claritate
pentru perceperea mai exact de ctre medici pentru a stabili un diagnostic.

2.4

Metodele de sistem Computer Vision:

Organizarea acestor metode este dependena de tipul de aplicaie prezentat. Unele aplicaii sunt
de tip stand-alone care rezolv problemele de msurtoare sau detecie. Totui putem enumera
cteva metode tipice prezente n majoritatea aplicaiilor de computer vision:
Pregtirea imaginii: O poz digital este produs de unul sau mai muli senzori vizuali,
depinznd de modelul de sensor, rezultatul este o imagine de tip 2D, o imagine de tip 3D sau o
secven de imagini. Pixelii imaginilor depind de intensitatea luminii i spectrul de culori (alb
negru, color, infra-rosu).
Detecia sau segmentarea
Preprocesarea
Extragerea de caracteristici
Procesare high-level
Luarea deciziilor sau determinarea pasului urmtor

Capitolul 3
Open C.V.
3.1 Definirea Open C.V.
OpenCV este o librrie de funcii n programare care au ca i scop computer visionul ca
domeniu procesat n timp real. Librria a fost creat de ctre corporaia Intel la centrul de
cercetare Nizhny Novgorod din Rusia, mai trziu fiind suportat de Willow Garage i n prezent
deinut de Itseez. Librria este distribuit gratis sub liciena BSD i este valabil pe mai multe
platforme: Windows, Mac, Linux, Solaris etc. Librria OpenCV a fost scrisa n limbajul C++,
dei extensii ale sale se pot gsi scrise i n alte limbaje, coninutul principal al librriei precum i
coninutul suportat este scris integral n C++.

3.2 Istoria Open C.V.


10

Proiectul OpenCV a fost lansat iniial de ctre Intel Research n 1999 cu iniiative de a profita
de avantajele CPU-ului pentru aplicaii intensive, o parte din proiect fiind axat pe tracing realtime i display 3D. Principalii contribuitori ai proiectului printre care s-au inclus un numr de
experi n optimizri mpreun cu echipa de performan i teste de la Intel.
n primele zile dup lansare, scopurile proiectului au fost descrise ca:
Viziune avansat nu doar open-source ci i cod optimizat.
Aplicabilitate comercial bazat pe viziunea avansat, fcndu-le portabile i de maxim
performan.
Oferta de a avea o librarie stabil, complet i pe mai multe platforme pe care
programatorii s o poat folosi n scop open-source.

3.3 Limbaje de programare


Cele mai des ntlnite limbaje de programare n care aplicaiile de OpenC.V. sunt scrise sunt:
C++, Go(sau golang), Java, C#, Ruby, Python etc. Am ales s prezint dou dintre cele mai
cunoscute i mai usor de folosit limbaje de programare: C++ un limbaj compilat i Python un
limbaj interpretat. Am ales aceste dou limbaje deoarece majoritatea aplicaiilor destinate
consumatorilor sunt scrise n una dintre cele dou, depinznd de cerinele fiecrei aplicaii.

C++: (Pronunat i ce plus plus)


Este un limbaj de programare orientat pe obiecte cu scop general i cu metode generice de
programare, deasemenea asigurnd manipularea memoriei la low-level. A fost gndit special
pentru programarea sistemelor cu performan, eficien i flexibilitate ca i obiective principale
din design.
C++ a fost standardizat de ctre organizaia internaional de standardizare (international
organization for standardization sau ISO) cu ultima versiune standard ratificat i publicat n
decembrie 2014 ISO/IEC 14882.
Multe alte limbaje de programare au fost inspirate i influenate de C++, printre ele se numar
Java, C#, noile versiuni de C Visual Basic i multe altele.

C++ Istoric:
n 1979 Bjarne Stroupstrup, un inginer programator danez, a nceput s lucreze la un
predecesor al C++-ului, C with classes == C cu clase. Motivaia sa pentru a crea un nou
limbaj a provenit din experiena sa n programare pentru teza sa de doctorat. Stoupstroup a
neles c limbajul de programare Simula, avea caliti benefice developmentului de software
industrial i de scara mai mare, dar limbajul a fost prea ncet pentru aplicaii practice. Pe de alt
parte limbajul BCPL a fost foarte rapid n compilare dar a fost prea low-lever pentru aplicaiile
de zi cu zi. Prin urmare ca i referin el a ales limbajul C pentru c este un limbaj general,
rapid, portabil i folosit foarte mult, dei C++ a avut influene i din Simula i din C a mai
fost influenat i de: ALGOL, Ada, CLU i ML.

C++ Limbajul:
11

C++ motenete majoritatea sintaxelor de C, urmtorul cod de exemplu a fost scris de Bjarne
Stroupstrup ca fiind programul de Hello world care folosete librria standard de C++:

C++ obiectele:
C++ a introdus (OOP) orientarea pe obiecte n C. El ofer clase, care asigur 4 caracteristici
prezente n OOP (i chiar i limbajelor non OOP): Abstracia, Encapsularea, Motenirea i
Polymorphismul. O caracteristic distinct n clasele de C++ comparat cu alte limbaje este
suportul de destructori deterministici.

Structura general al unui proiect C++:

Unul dintre cele mai importante lucruri n software development la nceperea unui proiect nou
este structura sa de baz. S presupunem c se cere un proiect nou de tip client, care pe viitor va
putea avea nite module suplimentare. Pentru implementarea acestor module la momentul
respectiv, structura proiectului trebuie s fie bine definit ca programatorul sau programatorii s
poat nelege cum merge i cum este gndit aplicaia principal pentru a ncepe lucrarea la
extensii.
O structur de baz a unui proiect C++ (sau a unui proiect general pentru limbajele compilate :
Java, C#, Objective-C) are urmtoarele tipuri de foldere sau directoare:

Bin: Executabilul rezultat dup compilare se va afla n acest folder.

Build: Acest folder conine majoritatea obiectelor, i este n general supus metodei
clean la sfritul compilrii.
12

Doc: Toate notiele i fiierele de configurare

Python:
Python este un limbaj de programare high-level, interpretat, cu scop general i dinamic.
Design-ul lui de baz fiind uurina de a citi i a scrie codul n sine de ctre programatori,
pentru a exprima coninutul sau codul n cat mai puine lini i cat mai coerent. Limbajul n sine
este mai lent dect limbajele compilate, i codul se compileaz cu ajutorul unui interpretor care
transform codul de Python n cod main, de aceea tipul de limbaj este interpretat. Alte exemple
de limbaje interpretate des ntlnite sunt (PHP: cu care a fost scris Facebook i platforma
Wikipedia, Ruby: cu care a fost scris Twitter).
Interpretoarele de Python sunt distribuite pe mai multe platforme, cele mai cunoscute fiind:
Linux, Mac i Windows, permind ca Python s mearg pe mai multe sisteme. Exist i mai
multe tipuri de tool-uri care permit s creeze kit-uri de instalare pentru platformele respective
(Py2exe: permite s exporte proiectul de Python ca i installer pentru windows).

Python istoric:
Python a nceput s fie construit n anii 1980, i a fost implementat ca i limbaj integral n
decembrie 1989 de ctre programatorul Guido von Rossum la Centrul de Informatica Wiskunde
din Olanda. n 16 octombrie 2000 a aprut Python 2.0 ca i un realease major, incluznd
procedee cum ar fi cycle-detecting, garbage collector i support Unicode. In 3 decembrie 2008 a
aprut Python 3.0 ca fiind un limbaj incompatibil cu 2.0. n prezent cele dou limbaje sunt
aproape similare n sintax dar official nu exist support pentru cross-compatibilitate.

Python caracteristici:
Unul dintre cele mai importante aspecte ale limbajului sunt uurina de a citi codul n sine,
chiar i pentru oameni care nu au cunotine tehnice sau n domeniul programrii pot nelege
parial codul n sine. Alte caracteristici menionate i n documentaie:
-

Frumuseea e mai bun decat urtul

Explicit e mai bine decat implicit

13

Simplu este mai bine decat complex

Citirea conteaz

Python limbajul:
Fiind unul dintre cel mai simplu de citit i de scris ca i cod dintre limbaje, un program de
hello world ar fi scris ntr-o singur linie de print i exemplul ar arta aa:

Aplicaii:
Zonele de aplicabilitate cele mai mari ale librriei OpenC.V. sunt:
Robotica static sau mobil
nvmnt
Interaciunea om-calculator
Procesarea 2D i 3D
Segmentarea
Montion Tracking

14

Capitolul 4
IDE (Integrated Development Environment)

4.1 Definirea IDE (Integrated Development Environment)

Un IDE sau Integrated Development Environment este o aplicaie software care ofer facilitate
programatorilor pentru development-ul software-ului. Un IDE de baz este conceput dintr-un
editor de code surs, un compilator sau interpretor (depinde de limbajul folosit), unelte de
automatizare a buildurilor i un debugger. Majoritatea IDE-urilor moderne au i autocomplete de
code i compilare de cod inteligent (compilarea inteligent este compilarea codului parial n
timp real pentru a depista erorile, fiind n timp real ele ofer programtorului date despre codul
surs n timp util).
Unele IDE-uri conin i compilator i interpretor n acelai timp (au suport multi-language de
ex: NetBeans sau Eclipse, ofer support pentru majoritatea limbajelor de programare modern, i
cele compilate i cele interpretate).
Alte IDE-uri nu conin deloc (de exemplu Lazarus care ofer suport strict pentru limbajul
Pascal sau SharpDevelop care ofer support strict pentru C#). Limitele ntre un IDE i altor tipuri
de unelte folosite pentru software development nu sunt bine definite. Cu alte cuvinte exist
editoare ce au integrat majoritatea tool-urilor folosite n industrie, sau ofer suport de tip plug-in
pentru majoritatea dintre ele (asta nseamn c IDE-ul este o aplicaie de baz cu strictul necesar,
iar aceasta se poate costumiza i pot fi adugate tool-uri adiionale).
n imaginea urmtoare este prezentat un IDE foarte folosit i foarte cunoscut numit Emacs.

15

4.2 Istoricul IDE

IDE-urile au devenit posibile cnd development-ul din terminal sau consol a nceput. Primele
sisteme de operare nu au avut suport pentru un IDE complet, atunci programele erau pregtite cu
aa numitele flowcharts (se introduceau programele cu hrtie sau cu cartele programabile) nainte
de a le trimite la compilator, care urma s transforme aa numit cod n cod main. Dartmouth
BASIC a fost primul limbaj care a fost construit cu ajutorul unui IDE. IDE-ul respectiv a fost pe
tip de comand (n terminal cu comenzi de baz, de exemplu: copy sau paste care avea un alias)
care nu artau i nu funcionau ca i IDE-urile din present (care sunt IDE-uri grafice i
complexe), dei comenzile de baz erau similare cu unul modern.
Maestro I a fost un produs creat de Softlab Munich i a fost primul IDE conceput pentru
development de software. El a fost instalat pentru 22.000 de programatori n toat lumea.
Pn n 1989, 6000 de instalri au existat n Republica Federal Germania.
Maestro a fost un lider mondial n anii 1970 i 1980. Astzi Maestro I a ramas n Muzeul de
Informatic i Tehnologie n Arlington.
16

Primul IDE care a fost gndit pe noiunea de plug-in a fost Softbench, iar n martie 2015
printre cele mai populare IDE-uri au fost Eclipse, Netbeans, Visual Studio, Vim i Emacs.
n poza din stnga este prezentat Microsoft Visual Studio (n general folosit pentru
developmental aplicaiilor de .Net) iar n dreapta este prezentat Eclipse (n general folosit pentru
development de Java, Php, C++ i Ruby).

4.3 Clasificarea IDE-urilor:


Clasificarea IDE-urilor se poate face n mai multe forme. O clasificare ar putea fi fcut dup
limbajele de programare suportate de IDE-ul respectiv (majoritatea IDE-urilor suport mai mult
de un limbaj de programare sau de scripting) sau de compania care a creat IDE-ul respectiv (n
general o companie care creeaz un IDE specific pentru un anumit limbaj, face parte dintr-un
grup de IDE-uri, cu alte cuvinte el vine ca un singur modul component al unui IDE mai mare, un
exemplu ar fi IDE-urile de la JetBrains care ofer PyCharm sau RubyMine fiecare dintre ele
17

fiind un IDE care suport un anumit limbaj, PyCharm ofer suport Python iar RubyMine ofer
support Ruby).
Cele mai cunoscute IDE-uri moderne folosite n software development sunt:
1. CodeBlocks: Este un IDE folosit pentu development de C, C++ i Fortran i a fost conceput s
suporte mai muli utilizatori simultan.Ofer o interfa consistent, support pentru diferite teme i
culori, ofer suport plug-in-uri. Este un program de tip open source i este distribuit pe mai multe
sisteme de operare.
2. Eclipse: Multe framework-uri de development au fost construite pe Eclipse. Eclipse este un
editor open source distribuit gratis pentru mai multe sisteme de operare (Linux, Mac, Windows,
Solaris) i ofer support pentru majoritatea limbajelor orientate pe obiecte sau pe a limbajelor
modern (Java, PHP, C++, C#, Ruby). A fost iniial un proiect de Java cu o varietate mare de plugin-uri care i-au extins capabilitile considerabil. Are integrat suport git i cvs, are integrat un
sistem de setri pentru teme i culori.
3. VisualStudio: Ofer o larg varietate de editoare i module pentru development software
(module pentru deploy(pentru web, desktop, telefoane mobile, console de jocuri), module pentru
test, module pentru git i cvs). Limbajele suportate de VisualStudio n general sunt limbajele
de .Net(C#. VisualBasic, C++, ASPX, XML, Javascript) dar are i plug-in-uri care pot
implementa suport i pentru PHP, Ruby, Python etc. Este un proiect de tip closed source i este
distribuit i gratis dar i cu licien profesional pe platforma Windows exclusiv.
4. Xcode: Ofer o serie de tool-uri pentru development i deployment de aplicaii pentru mediul
Apple. Este integrat cu framework-urile Cocoa i Cocoa Touch pentru aplicaiile de Mac, IPhone
i IPad. Este un proiect de tip opensource i este distribuit gratis iniial pe platform de Mac, dar
se poate instala i pe Windows sau Linux dar nu cu toate tool-urile valabile

Capitolul 5:
Implementarea Human-Detection
Human-detection este unul dintre cele mai interesante i practice tipuri de aplicaii ce se pot
face cu ajutorul Computer Vision-ului. Cu ajutorului unei camere de filmat i a unui program se
pot depista n timp real (sau dintr-un videoclip sau chiar o poz static) oameni.
Pentru creerea unei aplicaii de OpenCV este necesar un calculator de tip PC sau Laptop pentru
a putea instala toate programele i librriile necesare i de un sistem de operare Windows sau
Linux funcional.
Petru development-ul aplicaiei care va fi demonstrat am ales un sistem de operare de tip
Linux deoarece o mare parte din librriile necesare se afl deja preinstalate pe majoritatea
distribuiilor de Linux. Voi prezenta un scurt tutorial de instalare i setare a librriei OpenCV pe
ambele sisteme de operare.

5.1 Instalarea Librariei OpenCV pe sistemul de operare Linux:


18

Depinznd de distribuia de Linux pe care se ncearc instalarea librriei, sunt necesare


anumite pachete precompilate i prezente pe sistemul respectiv. Ca exemplu am s demonstrez
instalarea librriei pe o distribuie de debian numit "Linux Mint". Linux Mint vine cu unele
dintre pachetele necesare pentru development preinstalate, cele care nu sunt instalate i sunt
necesare le vom instala cu comanda "apt-get install".
Pentru a instala un pachet pe sistem, este nevoie de access "super user" care se poate executa
cu comanda "sudo su". Exprimarea unei comenzi de instalare pe Linux se poate scrie cu un antet
"sudo" n fa, urmnd ca s cear permisiune de super-user.
Urmtoarele comenzi trebuie executate pentru a instala pachetele necesare:
1. sudo apt-get install build-essentials
2. sudo apt-get install libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
3. sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev
libtiff-dev libjasper-dev libdc1394-22-dev
Pentru a instala librria mai este nevoie i de git, deoarece librria este hostata pe git:
4. sudo apt-get install git
Pentru alte unelte necesare pentru developmentul pe Linux mai pot exemplifica unele dintre
ele, sau cele care au fost folosite pentru creerea unei pri din codul proiectului. Majoritatea
uneltelor de development pentru Linux vin sub form de pachet i se pot instala similar cu cele
de care librria OpenCV a fost dependent.
5. sudo apt-get install terminator vim atom cmake
Instalarea librriei OpenCV se face cu comanda:
cd ~/<directorul de lucru>
git clone https://github.com/Itseez/opencv.git
Dup clonarea codului surs este nevoie de "build" ca pachetul s fie integrat n sistem i s
poat fi folosit pentru aplicaii practice.
cmake temp <ruta catre directorul de lucru>// unde temp este directorul temporar folosit de
tool-ul cmake
Exemplu de setarea i build-uirea pachetului OpenCV:
cd ~/opencv
mkdir release
cd release
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
make
sudo make install
Noti: Dup execuia comenzilor folosite n exemplu librria se va afla instalat cu success pe
sistemul de operare i poate fi executat din orice poziie a directorului "root".

19

5.2 Instalarea librriei OpenCV pe sistemul de operare Windows:


Spre deosebire de instalarea pe sistemul Linux, librria OpenCV este distribuit ca i pachet
direct compilat. Librria se poate descrca de pe site-ul oficial "sourcefoge". Majoritatea toolurilor necesare pentru windows, pentru a ncepe developmentul de OpenCV se vor downloada de
pe paginile lor oficiale cu ajutorul web-browserului. Putem enumera cteva din tool-urile
necesare: git, note++, visual studio c++, python 3.
Dup descarcarea i instalarea librriei OpenCV se recomand s se treac n "environmet
variables" rutele necesare ctre directorul de bin ale librriei (%OPENCV_DIR%\bin).

5.3 Setarea IDE-ului pentru sistemul de operare Linux:


Dup instalarea cu succes a librriei OpenCV pe sistemul de operare mai este nevoie de un IDE
pentru nceperea developmentului aplicaiei. Avnd n vedere c codul va fi scris n limbajul C++
am ales ca i IDE CodeBlocks. Se poate instala dintr-o simpl comand dupa care este gata de
funcionare:
~sudo apt-get install codeblocks codeblocks-contrib
Dup instalarea IDE-ului CodeBlocks pe sistemul de operare se creaz un proiect nou de tip
console i empty project. Se seteaz un nume al proiectului i un folder n care se va salva
proiectul.
Dup setarea proiectului este nevoie s trecem librriile de OpenCV ca i referin la proiect,
deoarece proiectul care urmeaz s fie scris are nevoie de referin pentru a ti c vom folosi o
librrie extern.
Se d click dreapta pe proiect -> Build Options -> Search Directory -> Compiler.
Aici se seteaz ruta catre directorul de OpenCV i subdirectorul Include dup care se d click
pe ok. Acum proiectul are referin la librriile de Include ale OpenCV-ului. Va mai fi nevoie s
adugm linkurile ctre fiierele ce le vom importa n cod.
Se d click dreapta pe proiect -> Build Options -> Search Directory -> Linker.
Aici se seteaz fiecare librrie necesar proiectului care se va construi, n funcie de fiecare
proiect deobicei se adaug doar librriile necesare sau specifice proiectului. n cazul acesta eu
am preferat s adaug toate librriile ce vin cu OpenCV dei a fost nevoie doar de cteva, toate au
fost incluse.

20

Capitolul 6
Bibliografie
Surse imagini:
https://en.wikipedia.org/wiki/Vehicular_automation#/media/File:The_ESA_Seeker_autonom
ous_rover_during_tests_at_Paranal.jpg
http://research.microsoft.com/en-US/projects/medimaging/brain_tumor.png
http://machinelearningsoftware.org/wp-content/uploads/2014/01/ID_2.jpg
https://en.wikipedia.org/wiki/Industrial_robot#/media/File:FANUC_6axis_welding_robots.jpg
https://upload.wikimedia.org/wikipedia/en/0/08/CVoverview2.svg
https://upload.wikimedia.org/wikipedia/commons/5/5a/Emacs-screenshot.png

21

S-ar putea să vă placă și