Академический Документы
Профессиональный Документы
Культура Документы
Øîêóðîâ Àíòîí Â.
shokurov.anton.v@yandex.ru
http://ìàøèííîåçðåíèå.ðô
17 ñåíòÿáðÿ 2018 ã.
Âåðñèÿ: 0.12
Àííîòàöèÿ
 äàííîé çàìåòêå íà÷íåòñÿ òâîå çíàêîìñòâî ñ áèáëèîòåêîé opencv.
Öåëü: Ôîðìèðîâàíèå ðàñòðîâûõ èçîáðàæåíèé. Ðèñîâàíèå êðèâûõ, â ÷àñò-
íîñòè, òåêñòà íà èçîáðàæåíèÿõ (êàðòèíêàõ). Èçìåíåíèå ÿðêîñòè, êîíòðàñòà
è öâåòîâîãî ïðîñòðàíñòâà (ïðåäñòàâëåíèÿ) èçîáðàæåíèé.
1 Ââåäåíèå
 äàííîé çàìåòêå áóäåò ïîêàçàíî êàê ôîðìèðîâàòü èçîáðàæåíèÿ, ïóòåì ðèñîâà-
íèÿ, â ÷àñòíîñòè, èçìåíÿòü ñóùåñòâóþùèå èçîáðàæåíèÿ. Òàêæå áóäåò ïðîèëëþ-
ñòðèðîâàíî êàê ââîäèòü/ñ÷èòûâàòü èçîáðàæåíèÿ, íàêëàäûâàòü èçîáðàæåíèÿ ðóã
íà äðóãà. Âûïîëíÿòü îòðèñîâêó ëèíèé, îêðóæíîñòåé è òåêñòà. Èçìåíÿòü ÿðîêñòü,
êîíòðàñò è öâåòîâîå ïðîñòðàíñòâî.
1
Çàìåòêè ïî OpenCV http://ìàøèííîåçðåíèå.ðô
Ñòðàíèöà 2
Çàìåòêè ïî OpenCV http://ìàøèííîåçðåíèå.ðô
Ñòðàíèöà 3
Çàìåòêè ïî OpenCV http://ìàøèííîåçðåíèå.ðô
Ñòðàíèöà 4
Çàìåòêè ïî OpenCV http://ìàøèííîåçðåíèå.ðô
• CV_8C3 ...
1 ...
2 5 0 0 , CV_8C1 ) ; //Ñîçäàíèå èçîáðàæåíèÿ
Mat img ( 4 0 0 ,
3 //èìåþùåå ðàçìåð 500 â øèðèíó íà 400 â âûñîòó.
4 //Òèï ïèêñåëåé: 8-áèòíûå çíàêîâûå ÷èñëà.
5 ...
Ñòðàíèöà 5
Çàìåòêè ïî OpenCV http://ìàøèííîåçðåíèå.ðô
1 //Ñîçäàíèå íåçàâèñèìîãî
Mat img2=img . c l o n e ( ) ;
2 //èçîáðàæåíèÿ ïî èçîáðàæåíèþ img.
Ñòðàíèöà 6
Çàìåòêè ïî OpenCV http://ìàøèííîåçðåíèå.ðô
ñîâêè áóäåò: ëèáî âûâåäåíà òîëüêî îáðåçàííàÿ ÷àñòü, âûâåäåíî âñå èçîáðàæåíèå ñ
îáðåçàííîé ÷àñòüþ.
Óïðàæíåíèå. Ïðîâåðèòü ïîñëåäíåå óòñâåðæäåíèå.
Íàäî ïîíèìàòü, ÷òî äàííîé ñâîéñòâî áóäåò âûïîëíåíî äëÿ âñåõ ôóíêöèé. Âñå
äàëåå ïðèâåäåííûå ïðåîáðàçîâàíèÿ áóäóò òàêæå îãðàíè÷èâàòüñÿ òàêèì ñïîñîáîì
äàííîé îáëàñòüþ. Íàïðèìåð, ïîâûøåíèå ÿðêîñòè, êîíòðàñòà, äîáàâëåíèå øóìà è
òîìó ïîäîáíîå.
Rect Range::all()
copyto.
Îêíà  ïåðâîé ïðîãðàììå îêíî áûëî ñîçäàíî àâòîìàòè÷åñêè ïðè åãî îòðèñîâêè.
Íà ñàìîì äåëå åãî ìîæíî ñîçäàòü â ÿâíîì âèäå, ÷òî ïîçâîëèò óêàçàòü è òåì ñàìûì
íàñòðîèòü îäèí âàæíûé ïàðàìåòð. Òàê, êàê ïîêàçàíî íèæå, îêíî çàäàåòñÿ âûçîâîì
ôóíêöèè namedWindow:
1 namedWindow ( " Display window " , WINDOW_AUTOSIZE );
 äàííîì ñëó÷àå, îíî áóäåò èçìåíÿòü ñâîè ðàçìåðû ïîä ïîêàçûâàåìîå èçîáðà-
æåíèå. Îòìå÷ó, ÷òî äàííûé àðãóìåíò ÿâëÿåòñÿ íåîáÿçàòåëüíûì ïàðàìåòðîì (ïî
óìîë÷àíèþ WINDOW_AUTOSIZE).
Ñòðî÷êó êîäà 1 ìîæíî âñòàâèòü â ïåðâóþ ïðîãðàììó ïåðåä ñòðî÷êîé 27. Â
òàêîì ñëó÷àå ê ïåðâîìó àðãóìåíòó ôóíêöèè imshow ñëåäóåò îòíåñòèñü êàê ê õýíä-
ëåðó ðàíåå ñîçäàííîãî îêíà.
moveWindow
Óïðàæíåíèå. Ñîçäàé áîëüøå îäíîãî îêíà è èçîáðàæåíèÿ.
Ñòðàíèöà 7
Çàìåòêè ïî OpenCV http://ìàøèííîåçðåíèå.ðô
Ñòðàíèöà 8
Çàìåòêè ïî OpenCV http://ìàøèííîåçðåíèå.ðô
20 return 0;
21 }
Çàìå÷ó, ÷òî â äàííîì ñëó÷àå, ìû òîëüêî âûâîäèì èçîáðàæåíèå â ôàéë è íåò íåîá-
õîäèìîñòè åãî âûâîäà íà ýêðàí (îòñóòñòâóåò ñòðîêà 27 ïðåäûäóùåé ïðîãðàììû).
Òåì íå ìåíåå çàãîëîâî÷íûé ôàéë (ñòð. 2) íåîáõîäèì äëÿ âûçîâà ôóíêöèè imwrite.
Ïåðâûé àðãóìåíò ôóíêöèè imwrite óêàçûâàåò íà èìÿ èçîáðàæåíèÿ, ïóòü ê âû-
õîäíîìó ôàéëó. Êàê îáû÷íî, ïóòü ìîæåò áûòü êàê îòíîñèòåëüíûì ("./lena.bmp"),
òàê è ïîëíûì ("/home/vasay/girls/lena.bmp").
Ðàñøèðåíèå ôàéëà (íàïðèìåð, ".bmp") ôàêòè÷åñêè óêàçûâàåò íà ôîðìàò õðà-
íåíèÿ èçîáðàæåíèÿ. Èçîáðàæåíèÿ ìîæåò áûòü çàïèñàíî äëÿ øèðîêîãî êðóãà ôîð-
ìàòîâ, íî âñå çàâèñèò îò ñáîðêè áèáëèîòåêè. Îáû÷íî ïîääåðæèâàþòñÿ òðàäèöèîí-
íûå ôîðìàòû: bmp, jpeg, png è äðóãèå.
Öâåòîâîå ïðîñòðàíñòâî ôàéëà çàâèñèò îò ôîðìàòà ìàòðèöû. Òàê, åñëè ýëåìåí-
òû ìàòðèöû ÿâëÿþòñÿ ïðîñòî ÷èñëàìè, òî èòîãîâîå èçîáðàæåíèå áóäåò ìîíîõðîì-
íûì. Åñëè æå âåêòîðà äëèíû 3, òî ñêîðåå âñåãî òðåõêîìïîíåíòíîå öâåòíîå èçîá-
ðàæåíèå â ôîðìàòå RGB (red êðàñíûé, green çåëåíûé, blue ñèíèé), íî ìîæåò
áûòü â ïðîñòðàíñòâå HSV (hue òîí, saturation íàñûùåííîñòü, value çíà÷åíèå).
Ïðè íåîáõîäèìîñòè ê èçîáðàæåíèþ äîáàâëÿåòñÿ è àëüôà êàíàë (ïðîçðà÷íîñòü).
Ìîæíî òàêæå âûïîëíèòü è áîëåå òîíêóþ íàñòðîéêó êîäåêà (3é íåîáÿçàòåëüíûé
àðãóìåíò).
Çàïèñàííîå ïðîãðàììîé âûõîäíîå èçîáðàæåíèå ("./output.bmp") ìîæíî ïðî-
ñìîòðåòü ñòàíäàðòíûìè ïðîãðàììàìè ïðîñìîòðà èçîáðàæåíèé.
Óïðàæíåíèå. Âîñïîëüçóéñÿ ïåðåìåííûìè argc è argv äëÿ îïðåäåëåíèÿ âõîäíîãî
ôàéëà, êîòîðûé íåîáõîäèìî ïðåîáðàçîâàòü â ñåðîå. Çàïèøè ìîíîõðîìíîå èçîáðà-
æåíèå äîáàâèâ íåêèé ñóôôèêñ ê åãî èìåíè.
Ââîä Ïîìèìî âûâîäà ïðîãðàììà äîëæíà óìåòü è ââîäèòü äàííûå, ò.å. â íàøåì
ñëó÷àå èçîáðàæåíèÿ. Ââåñòè èçîáðàæåíèå, à òî÷íåå ñ÷èòàòü åãî èç ôàéëà, ìîæíî
ïîñðåäñòâîì ôóíêöèè imread:
Ïåðâûé àðãóìåíò óêàçûâàåò ïóòü ê èçîáðàæåíèþ, à âòîðîé íåîáÿçàòåëüíûé
àðãóìåíò òðåáóåìîå öâåòîâîå ïðîñòðàíñòâî ó èòîãîâîãî èçîáðàæåíèÿ, ò.å. âîçâðà-
ùàåìîé ìàòðèöû:
Ñòðàíèöà 9
Çàìåòêè ïî OpenCV http://ìàøèííîåçðåíèå.ðô
Ñòðàíèöà 10
Çàìåòêè ïî OpenCV http://ìàøèííîåçðåíèå.ðô
Ñòðàíèöà 11
Çàìåòêè ïî OpenCV http://ìàøèííîåçðåíèå.ðô
6 int main ( )
7 {
8 Mat img ;
9 img = i m r e a d ( " . / l e n a . bmp" , IMREAD_COLOR ) ;
10 img += 3 0 ;
11 namedWindow ( " Display window " , WINDOW_AUTOSIZE );
12 imshow ( " Display window " , img );
13 waitKey ( 0 ) ;
14 return 0;
15 }
1 img += S c a l a r ( 3 0 ) ;
1 img += S c a l a r ( 0 , 0, 30);
Ñòðàíèöà 12
Çàìåòêè ïî OpenCV http://ìàøèííîåçðåíèå.ðô
min max
Ãðàäàöèè ñåðîãî Ðàíåå áûëî îòìå÷åíî, ÷òî èçîáðàæåíèå ìîæíî ñðàçó çàãðó-
çèòü èç ôàéëà â ìîíîõðîìíîì öâåòîâîì ïðîñòðàíñòâå óêàçàâ ñîîòâåòñòâóþ êîí-
ñòàíòó â ôóíêöèè imread. Íî ìîæíî âûïîëíèòü ïðåîáðàçîâàíèå öâåòíîãî èçîáðà-
æåíèÿ â ãðàäàöèè ñåðîãî â ÿâíîì âèäå.
Ñòðàíèöà 13
Çàìåòêè ïî OpenCV http://ìàøèííîåçðåíèå.ðô
Ñòðàíèöà 14
Çàìåòêè ïî OpenCV http://ìàøèííîåçðåíèå.ðô
Êîíñòðóêòîð Ïåðâîå ÷èñëî çàäàåò êîîðäèíàòó âäîëü îñè àáñöèññ, à âòîðîå âäîëü
îñè îðäèíàò. Îòìå÷ó, ÷òî îñü y (îðäèíàò) òðàäèöèîííî ó èçîáðàæåíèé íàïðàâëåíà
âíèç. (Âàæíî ïðè âûâîäå èçîáðàæåíèÿ íà ýêðàí.)
Äîñòóï ê îòäåëüíûì êîìïîíåíòàì îñóùåñòâëÿåòñÿ òàê: p.x p.y
Ñòðàíèöà 15
Çàìåòêè ïî OpenCV http://ìàøèííîåçðåíèå.ðô
Ñòðàíèöà 16
Çàìåòêè ïî OpenCV http://ìàøèííîåçðåíèå.ðô
 äàííîì ñëó÷àå áóäåò íàðèñîâàíà îêðóæíîñòü ñ öåíòðîì â òî÷êå (100, 150) ðàäè-
óñà â 70 ïèêñåëåé. Öâåò îêðóæíîñòè áóäåò çàäàí òðîéêîé ÷èñåë (50, 100, 200).
Ïî àíàëîãèè ñî ñõîæèìè ìåòîäàìè ×åòâåðòûé àðãóìåíò çàäàåò òîëùèíó ëè-
íèè. Íî áîëåå èíòåðåñíûì ÿâëÿåòñÿ òî, ÷òî îòðèöàòåëüíàÿ òîëùèíà îáîçíà÷àåò
çàêðàñêó âíóòðåííîñòè îêðóæíîñòè, ò.å. áóäåò íàðèñîâàí êðóã.
rectangle FILLED
Ýëëèïñ
llpoly
Ñòðàíèöà 17
Çàìåòêè ïî OpenCV http://ìàøèííîåçðåíèå.ðô
randu??
Óïðàæíåíèå. Ïðåâðàòèòå ýòè êóñêè êîäà â ïðîãðàììó, êîòîðàÿ ê âõîäíîìó
èçîáðàæåíèþ äîáàâëÿåò øóì è ïîêàçûâàåò ðåçóëüòèðóþùåå èçîáðàæåíèå â îêîø-
êå.
Ñòðàíèöà 18