Download as pdf or txt
Download as pdf or txt
You are on page 1of 5

Çàìåòêè ïî OpenCV http://ìàøèííîåçðåíèå.

ðô

Óñòàíîâêà áèáëèîòåêè OpenCV


Øîêóðîâ Àíòîí Â.

shokurov.anton.v@yandex.ru

http://ìàøèííîåçðåíèå.ðô

28 ñåíòÿáðÿ 2017 ã.

Âåðñèÿ: 0.10

Àííîòàöèÿ
Ðàññìîòðåíû ðàçëè÷íûå ñïîñîáû óñòàíîâêè áèáèëîòåêè OpenCV. Ïîä-
äåðæêà êàê Linux (Mac), òàê è Windows. Ïîêàçàíî âçàèìîäåéñòâèå ñ QT.

1 Óñòàíîâêà è íàñòðîéêà ñèñòåìû


Ïðîãðàììû ìîæíî ïèñàòü êàê íà Ñè (Ñè++), òàê è íà python. Ìàòåðèàë äàííîé
çàìåòêè ñêîðåå îðèåíòèðîâàí íà ðàçðàáîòêó ïðîãðàìì ñ èñïîëüçîâàíèåì ÿçûêîâ
Ñè è Ñè++. Äëÿ íàïèñàíèÿ ïðîãðàìì íà python íóæíî ÷àñòè÷íî âûïîëíèòü óêà-
çàíèÿ äàííîé çàìåòêè, à ïîòîì óñòàíîâèòü ñîîòâåòñòâóþùèé ïàêåò äëÿ python.
Îäíîé èç öåëüþ ÿâëÿåòñÿ ïîëó÷åíèÿ êðîññ ïëàòôîðìåííûõ ïðîãðàìì. Ñàìà
áèáëèîòåêà OpenCV êðîññ ïëàòôîðìåíà.
 ïåðâîì ïîäðàçäåëå ðàññìîòðåíà ñèñòåìà Linux, à âî âòîðîì Windows.

1.1 Linux

 äàííîì ïîäðàçäåëå ðàññìàòðèâàåòñÿ îïåðàöèîííàÿ ñèñòåìà Linux.


Ìîæåò îêàçàòüñÿ òàê, ÷òî ó áèáëèîòåêà OpenCV óæå óñòàíîâëåíà. Ïîýòîìó
ïåðåä ïåðåõîäîì â ñëåäóþùèé ïàðàãðàô, ïðîâåðü íàëè÷èå áèáëèîòåêè OpenCV â
ñèñòåìå êàê ýòî ïîêàçàíî â îäíîì èç ñëåäóþùèõ ïàðàãðàôîâ.

Óñòàíîâêà èç ðåïîçèòîðèÿ Ìíîãèå äèñòðèáóòèâû Linux óæå èìåþò ïàêåò ñ


OpenCV. Ïîýòîìó ìîæíî åãî óñòàíîâèòü îò òóäà. Äëÿ ýòîãî íóæíà óêàçàòü ñèñòå-
ìå óïðàâëåíèÿ ïàêåòàìè, ÷òî íóæíî óñòàíîâèòü ïàêåòû îòíîñÿùèåñÿ ê OpenCV.

Óñòàíîâêà áèáëèîòåêè OpenCV Ñòðàíèöà 1


Çàìåòêè ïî OpenCV http://ìàøèííîåçðåíèå.ðô

Æåëàòåëüíî âñå. Òàêèå ïàêåòû îáû÷íî èìååò èìÿ íà÷èíàþùèåñÿ ñ libopencv. Íà-
ïðèìåð, â ñåìåéñòâå Debian òàêèìè ïàêåòàìè áóäóò: libopencv-core..., libopencv-
imgproc..., libopencv-highgui... è òîìó ïîäîáíîå. Ãäå ê âìåñòî òðîåòî÷èÿ èäåò íîìåð
âåðñèè áèáëèîòåêè.  ÷àñòíîñòè, ìîæåò íà÷èíàòüñÿ ñ 2.4. Äåòàëè òî÷íîãî íàçâàíèÿ
íå âàæíû.
Áîëåå òîãî, ââèäó òîãî, ÷òî áèáëèîòåêà íàì íóæíà íå òîëüêî äëÿ çàïóñêà ïðî-
ãðàìì íàïèñàííûõ ñ ïðèìåíåíèåì OpenCV, íî è äëÿ ðàçðàáîòêè ñîáñòâåííûõ ïðî-
ãðàìì, ïîíàäîáÿòñÿ ïàêåòû îòâå÷àþùèå çà ñáîðêó.
Äëÿ ñáîðêè ïðîãðàìì â ñëó÷àå åñëè âñå áûëî ñäåëàíî ïðàâèëüíî:
1 g++ prog . cpp − s t d=c++11 ` pkg− c o n f i g opencv −− c f l a g s \
2 > −− l i b s ` −o prog

Ñèìâîëû \è > îáîçíà÷àåò òî, ÷òî ýòî ïðîäîëæåíèå ñòðîêè. Íà ñàìîì äåëå äîñòà-
òî÷íî âñå óêàçàòü íà îäíîé ñòðîêå (áåç ýòèõ ñèìâîëîâ).
prog.cpp ýòî âõîäíîé ôàéë ñ êîäîì ïðîãðàììû, à prog ýòî âûõîäíîé èñïîëíÿå-
ìûé ôàéë.

Ñáîðêà Èíîãäà áûâàåò, ÷òî âñå-òàêè ñîáðàòü áèáëèîòåêó. Äëÿ ýòîãî ìîãóò áûòü
ðàçíûå ïðè÷èíû: îò îòñóòñòâèÿ íóæíîé âåðñèè áèáëèîòåêè â ðåïîçèòîðèè, äî íåîá-
õîäèìîñòè äåòàëüíîãî èçó÷åíèÿ ñàìîãî êîäà áèáëèîòåêè.
Äåëàåòñÿ äîñòàòî÷íî ïðîñòî.
Ñíà÷àëî íóæíî ñêà÷àòü èñõîäíûé êîä áèáëèîòåêè. Äëÿ ýòîãî ñóùåñòâóþò êàê
ìèíèìóì äâà âàðèàíòà. Ëèáî ãîòîâûé àðõèâ ñî ñòðàíè÷êå îôèöèàëüíîãî ñàéòà
ëèáî ñ ãëîáàëüíîãî ìåñòà õðàíåíèÿ èñõîäíûõ êîäîâ (github).
Íà ñòðàíèöå îôèöèàëüíîãî ñàéòà (http://opencv.org/releases.html) íóæíî
âûáðàòü íóæíóþ âåðñèþ áèáëèîòåêè è âûáðàòü äëÿ ñêà÷èâàíèÿ ññûëêó sources.
Áóäåò ñêà÷åí àðõèâ. Äàëåå åãî íóæíî áóäåò ðàçàðõèâèðîâàòü íà äèñêå ñ äîñòàòî÷-
íûì ñâîáîäíûì ìåñòîì.
Äðóãîé âàðèàíò ýòî ñêà÷àòü ñàéò íåïîñðåäñòâåííî èç
https://github.com/opencv/opencv
Òàêîé ïîäõîä ïîçâîëÿåò ñêà÷àòü ìàêñèìàëüíî àêòóàëüíóþ âåðñèþ áèáëèîòå-
êè. Àêòóàëüîíñòü îïðåäåëÿåòñÿ íå òîëüêî íàëè÷èåì ñàìûõ ïîñëåäíèõ ïëþøåê,
íî è íàëè÷èåì íîâûõ îøèáîê. Äëÿ ñêà÷èâàíèÿ èç òàêîãî õðàíèëèùà ìîæíî ëè-
áî íåïîñðåäñòâåííî ñêà÷àòü ñàì àðõèâ ñ èñõîäíûì êîäîì (÷åãî áóäåò äîñòàòî÷íî)
ëèáî âûóäèòü äàííûå èñïîëüçóÿ ñïåöèàëüíóþ ïðîãðàììó git, êîòîðóþ íåîáõîäè-
ìî óñòàíîâèòü â ñèñòåìó â ñëó÷àå å¼ îòñóòñòâèÿ. Äëÿ ñà÷èâàíèÿ äàííûõ ñ git
íóæíî âûáðàòü ìåñòî êóäà ñêà÷àòü, íàïðèìåð, ïàïêà /Downloads/opencv/ è äà-
ëåå âûçâàòü git clone https://github.com/opencv/opencv.git Äàííàÿ êîìàíäà
âûóäèò èñõîäíûé êîä â ïîäïàïêó opencv.  äàííîì ñëó÷àå êîä áóäåò ñêà÷àí â ïàï-
êó: /Downloads/opencv/opencv ×òîáû â äàëüíåéøåì íå ïóòàòüñÿ (íàïðèìåð, åñëè

Óñòàíîâêà áèáëèîòåêè OpenCV Ñòðàíèöà 2


Çàìåòêè ïî OpenCV http://ìàøèííîåçðåíèå.ðô

íåîáõîäèìî ðàáîòàòü ñ ðàçíûìè âåðñèÿìè áèáëèîòåêè opencv) ìîæíî ïåðåèìåíî-


âàòü ïàïêó íàïðèìåð â /Downloads/opencv/opencv-3.3.0/
Äàëåå êàê è â ïðåäûäóùåì ïóíêòå ïåðåõîäèì ê ïðîöåññó ñàìîé ñáîðêè áèáëèî-
òåêè.
Ïóñòü áûëà ñêà÷åíà áèáëèîòåêà è ðàçìåùåíà â ïàïêó
/Downloads/opencv/opencv-3.3.0
Äàëåå ñëåäóåò ðåøèòü â êàêîé ïàïêå áóäåò ñîçäàâàòüñÿ êîä. Äàííàÿ ïàïêà ÿâ-
ëÿåòñÿ âðåìåííîé, íà âðåìÿ ñîçäàíèÿ áèíàðíèêîâ. Ðàñïîëîæåíèå ýòîé ïàïêè íå
òàê âàæíî òàê êàê ñêîïèðîâàòü áèíàðíèêè âñåãäà ìîæíî áóäåò ïîòîì. Áîëåå òî-
ãî, óñòàíîâêà áèíàðíèêîâ â ñèñòåìíóþ ïàïêó äåëàåòñÿ îòäåëüíî è íå çàâèñèò îò
ïîëîæåíèÿ ýòîé âðåìåííîé ïàïêè. Îáû÷íî å¼ ñîçäàþò êàê ïîäïàïêó è íàçûâàþò
build.
Òàêèì îáðàçîì íóæíîé ïåðåéòè â ïàïêó /Downloads/opencv/opencv-3.3.0, ñî-
çäàòü ïîäïàïêó build è ïåðåéòè â íå¼.
Ïîñëå ýòèõ øàãîâ â íóæíî ñêîíôèãóðèðîâàòü ñáîðêó. Ìîæíî âûáðàòü íàïðè-
ìåð ñ ôîðìàòîì êàêèõ êàðòèíîê áóäåò óìåòü ðàáîòàòü áèáëèîòåêà, êàêîå áóäåò
óñêîðåíèå è òîìó ïîäîáíîå.
Êîíôèãóðàöèþ ìîæíî âûïîëíèòü â òåêñòîâîì ðåæèìå, íî ýòî ñêó÷íî. Ëó÷øå
èñïîëüçîâàòü îêîííûé êîíôèãóðàòîð. Äëÿ ýòîãî íóæíî â êîíñîëè âûçâàòü cmake-
gui .. èç ïàïêè build. Äàëåå íóæíî íàæàòü êíîïêó êîíôèãóðèðîâàòü (Congure),
ñîãëàñèâøèñü (Finish) ñ ïàðàìåòðàìè ïî óìîë÷àíèþ. Áóäåò ïîêàçàí ñïèñîê ïàðà-
ìåòðîâ (êèðïè÷íûé öâåò íè î÷åì ïëîõîì íå ãîâîðèò, ïðîñòî ðàçðàáîò÷èêè ëþ-
áÿò òàêóþ öâåòîâóþ ãàììó) Ñïèñîê ïàðàìåòðîâ áîëüøîé. Îáû÷íî ìîæíî äåëàòü
ñáîðêó ñ ïàðàìåòðàìè ïî óìîë÷àíèþ. Íî ñëåäóåò îáðàòèòü âíèìàíèÿ íà ïàðàìåò-
ðû ñâÿçàííûå ñ îêîííîé ñèñòåìîé QT è ïðèìåðû ïðîãðàìì (BUILD_EXAMPLES,
INSTALL_C_EXAMPLES, INSTALL_PYTHON_EXAMPLES). Ïîñëå âûáîðà ïà-
ðàìåòðîâ ñëåäóåò çàíîâî âûïîëíèòü êîíôèãóðèðîâàíèå (íàæàòü êíîïêó). Ïîñëå
ýòîãî ìîãóò ïîÿâèòñÿ íîâûé âîçìîæíîñòè. Íàïðèìåð,ïðè âêëþ÷åíèè with_qt ïî-
ñëå ïîâòîðíîãî êîíôèãóðèðîâàíèÿ ïîÿâÿòñÿ ïàðàìåòðû ñâÿçàííûå íåïîñðåäñòâåí-
íî ñ qt.
Ïîòîì ñëåäóåò íàæàòü êíîïêó ñôîðìèðîâàòü (Generate), êîòîðàÿ è ñîçäàñò
íåîáõîäèìûå Makeleû äëÿ ñáîðêè áèáëèîòåêè.
Äàëåå ñëåäóåò âûéòè èç äàííîé ïðîãðàììû è â êîíñîëè âûçâàòü make. Ïîñëå
÷åãî ìîæíî ïîéòè ïåðåêóñèòü, ïðîöåññ ñáîðêè äîñòàòî÷íî ïðîäîëæèòåëüíûé. Äëÿ
óñêîðåíèÿ ìîæíî óêàçàòü make ÷òîáû îí âûïîëíÿë ðàáîòó â ïàðàëëåëü: make -j 8,
íàïðèìåð óêàæåò íà èñïîëüçîâàíèå 8 ïîòîêîâ äëÿ ñáîðêè.
Äëÿ ñáîðêè è çàïóñêà ïðîãðàìì ýòîãî áóäåò äîñòàòî÷íî. Òàê, ïðè êîìïèëÿ-
öèè íóæíî áóäåò óêàçûâàòü êîìïèëÿòîðó ðàñïîëîæåíèå ôàéëîâ çàãîëîâêîâ, ïðè
ñáîðêè ðàñïîëîæåíèå áèíàðíûõ áèáëèîòåê.
Ïðè çàïóñêå òîæå íåîáõîäèìî áóäåò óêàçàòü ïîëîæåíèå áèáëèîòåê, íî óæå äè-

Óñòàíîâêà áèáëèîòåêè OpenCV Ñòðàíèöà 3


Çàìåòêè ïî OpenCV http://ìàøèííîåçðåíèå.ðô

íàìè÷åñêèõ.

1.2 Windows

Óñòàíîâêà èç áèíàðíèêîâ Windows â îòëè÷èå îò Linux ðàçðàáàòûâàåòñÿ öåí-


òðàëèçîâàíî, ò.å. ïîíÿòíî, ÷òî çà íåãî îòâå÷àåò ôèðìà Microsoft. Ïîýòîìó ïðîãðàì-
ìû ïîä Windows áèíàðíî ñîâìåñòèìû. Ïîñëåäíåå îçíà÷àåò, ÷òî íåò íåîáõîäèìîñòè
ñîáèðàòü áèáëèîòåêó OpenCV ïîä êàæäóþ âåðñèþ Windows. Ïîñëåäíåå âëå÷åò, ÷òî
å¼ äîñòàòî÷íî ñîáðàòü åäèíîæäû è îíà áóäåò ðàáîòàòü âåçäå. Èìåííî ïîýòîìó â
ñëó÷àå Windows ìîæíî ñêà÷àòü íóæíûå àðõèâ ñ îôèöèàëüíîãî ñàéòà áèáëèîòåêè:
http://opencv.org/releases.html Ïî êðàéíåé ìåðå áóäåò óêàçàíà íåîáõîäèìàÿ
ññûëêà.
Ýòîò àðõèâ ñêà÷èâàåòñÿ è ðàçàðõèâèðóåòñÿ â âûáðàííîì ìåñòå íà äèñêå. Ïðî-
ãðàììû óñòàíîâùèêà íåòó. ïîýòîìó íóæíî ñàìîñòîÿòåëüíî âûáðàòü óäîáíîå ðàñ-
ïîëîæåíèå êîðíåâîé ïàïêè áèáëèîòåêè.
Ñàìîå ñëîæíîå ÿâëÿåòñÿ íàñòðîéêà ïðîãðàììû, êîòîðàÿ èñïîëüçóåòñÿ äëÿ êîì-
ïèëÿöèè ïðîãðàìì.
Äëÿ íàñòðîéêè ïðîåêòà íóæíî óêàçàòü ïóòè ê ïàïêà ñîäåðæàùåì çàãîëîâî÷-
íûå ôàéëû áèáëèîòåêè. .. Òîæå äëÿ áèáëèîòå÷íûõ. Åñòü äâà òèïà áèíàðíèêîâ:
äëÿ îòëàäêè è äëÿ âûïóñêíûå. Èõ íå ñëåäóåò ïóòàòü, èíà÷å ïðîãðàììà ìîæåò
âûäàâàòü ñòðàííûå îøèáêè... è áóäåò ñîçäàâàòüñÿ âïå÷àòëåíèå, ÷òî íå ðàáîòàåò
ïðîãðàììà, õîòÿ íà ñàìîì äåëå íå ïðàâèëüíî íàñòðîåí êîìïèëÿòîð/ñáîðùèê.

1.3 Ïðîãðàììû

Çàïóñê ïðîñòåéøåé ïðîãðàììû.


1 #include <opencv2 / c o r e / c o r e . hpp>
2 #include <opencv2 / h i g h g u i / h i g h g u i . hpp>
3
4 #include <i o s t r e a m >
5
6 int main ( int argc , char ∗∗ argv )
7 {
8 if ( a r g c < 3 )
9 {
10 s t d : : c o u t <<"Need i n p u t and output "
11 " image f i l e names ! " << s t d : : e n d l ;
12 return − 1;
13 }
14

Óñòàíîâêà áèáëèîòåêè OpenCV Ñòðàíèöà 4


Çàìåòêè ïî OpenCV http://ìàøèííîåçðåíèå.ðô

15 cv : : Mat I = cv : : imread ( argv [ 1 ] ,


16 cv : : IMREAD_GRAYSCALE ) ;
17 cv : : i m w r i t e ( argv [ 2 ] , I ) ;
18 return 0;
19 }

Ñòðî÷êè â êàâû÷êàõ ìîæíî òàê íå ðàçáèâàòü! Ýòî ñäåëàíî äëÿ ðàçìåùåíèÿ òåêñòà
íà ñòðàíèöå!
Êóðñ ðàññ÷èòàí íà òåêóùóþ âåðñèþ áèáëèîòåêè. Ïîýòîìó, åñëè áóäóò îøèáêè
îòíîñèòåëüíî cv::IMREAD_GRAYSCALE, òî çàìåíè åãî íà
CV_LOAD_IMAGE_GRAYSCALE
Çàïóñê ñ îêíîì èç OpenCV
1 #include <opencv2 / c o r e / c o r e . hpp>
2 #include <opencv2 / h i g h g u i / h i g h g u i . hpp>
3
4 #include <i o s t r e a m >
5
6 int main ( int argc , char ∗∗ argv )
7 {
8 if ( a r g c < 2 )
9 {
10 s t d : : c o u t <<"Need an image f i l e name "
11 " t o show ! " << s t d : : e n d l ;
12 return − 1;
13 }
14
15 cv : : Mat I = cv : : imread ( argv [ 1 ] , cv : : IMREAD_COLOR ) ;
16 cv : : namedWindow ( "My Window" , cv : : WINDOW_AUTOSIZE ) ;
17 cv : : imshow ( "My Window" , I ) ;
18 cv : : waitKey ( 0 ) ;
19 return 0;
20 }

Êðîññ-ïëàòôîðìåííîñòü åñòü, íî îêîííàÿ ñèñòåìà î÷åíü ïðèìèòèâíàÿ.


Çàïóñê ñ QT.
Ïîëíîöåííàÿ îêîííàÿ ñèñòåìà è êðîññ-ïëàòôîðìåííîñòü.

Óñòàíîâêà áèáëèîòåêè OpenCV Ñòðàíèöà 5

You might also like