You are on page 1of 18

Средно училиште на Град Скопје

Раде Јовчевски - Корчагин

Проектна Задача
Информатика
ТЕМА : OpenCV

Ментор: Изработил:

Валентина Аниќ Ангела Ивановска IV-7

Скопје, 2024
OpenCV| Проектна Задача
_____________________________________________________________________________________

Содржина:

Целта на истражувањето…………………………………………………………………….2

Вовед...............................................................................................................................3

1.Употреба на OpenCV…………………………………………………………………..…...4

2.Анализа и промени со OpenCV……………................................................................9

3.Компјутерска визија на предмети на видео во


живо................................................12

Заклучок.........................................................................................................................16

Користена литература..................................................................................................17

_____________________________________________________________________________________

1
OpenCV| Проектна Задача
_____________________________________________________________________________________

Целта на истражувањето::
Целта на оваа Проектна задача е да ја претстави OpenCV една од новите
водечки технологии, едноставни за употреба и со широка примена во различни
области и индустрии.

OpenCV е огромна библиотека со отворен код за компјутерска визија, машинско


учење и обработка на слики и сега игра голема улога во работењето во реално
време, што е многу важно во денешните системи. Со негова употреба, може да се
обработат слики и видеа за да се идентификуваат предмети, лица, па дури и
ракопис на човек. Кога е интегриран со различни библиотеки, како што е NumPy,
python е способен да ја обработува структурата на низата OpenCV за анализа. За
да го идентификуваме моделот на сликата и неговите различни карактеристики,
користиме векторски простор и вршиме математички операции на овие
карактеристики.

OpenCV е нова технологија која лесно се комбинира со веќе постоечките


програмски јазици и алатки за обработка на податоци. Како таква наоѓа примена
во многу области како роботика, автомобилска индустрија, медицина, безбедност
и други. Една значајна придобивка од користењето на OpenCV е нејзината
примена како алатка за прикажување на предмети на луѓе со оштетен вид,такашто
сликата на објектот ја претвора во поим и на тој начин им ја визуелизира
околината.

_____________________________________________________________________________________

2
OpenCV| Проектна Задача
_____________________________________________________________________________________

Вовед:
Освен технолошките напредоци и нивното постојано усовршување, постои и
избор на алатки кои ги користат лицата, професионалци кои сакаат да создаваат и
подобруваат веќе постоечки софтвер. Овие алатки вклучуваат различни опции,
вклучувајќи нови програмски јазици дизајнирани да се справуваат и да ги
отстрануваат недостатоците на нивните претходници. Дополнително,
излегувањето на програмски библиотеки придонесува кон постоечките јазици,
интегрирајќи предвидени функции за скратување и поедноставување на кодот,
што ја подобрува ефикасноста и го издига целокупниот процес на развој на
софтвер.

OpenCV, позната и како Open Source Computer Vision Library, претставува


широко прифатена отворена библиотека за компјутерска визија и машинско
учење. Со своите различни алатки и функционалности, оваа библиотека
обезбедува моќна платформа за обработка на слики и видеа, препознавање на
објекти, извлекување на карактеристики и други визуелни задачи. OpenCV
успешно се користи во различни области, вклучувајќи роботика, вештачка
интелегенција, препознавање на лица и анализа на медицински слики. Неговата
широката примена го прави неопходен ресурс за програмери и истражувачи кои
работат на апликации за компјутерска визија и тоа им овозможува да се справат
со предизвиците на комплексни визуелни задачи и да бидат водечки во
иновациите во области како роботика, медицинска анализа на слики и друго.

OpenCV се применува претежно во програмскиот јазик C++, но исто така има


интерфејси за Python, Java и други јазици, што го прави достапен за програмери
во различни програмски системи.

_____________________________________________________________________________________

3
OpenCV| Проектна Задача
_____________________________________________________________________________________

1.Употреба на OpenCV
OpenCV го осигурува процесот на препознавање на објекти преку интеграција на
слики со исти предмети и различни атрибути, како и со документ кој ги носи
имињата на препознатите предмети. Оваа врска овозможува автоматско
препознавање и асоцијација на предметите во иднина. Овој напреден пристап
гарантира не само подобрување на прецизноста и опфатноста на системот, туку и
допринесува кон еволуцијата и напредокот во областа на компјутерската визија.

dog.jpg dog.txt

Пред започнување на било кој проект што ја користи OpenCV библиотеката,


неопходно е да се изврши инсталацијата на истата на компјутерот. Иако
постапката за инсталација е слична за секој програмски јазик, во Python тоа е
особено лесно и едноставно. Процесот се изведува со пишување на следната
команда:

Откако ќе го инсталираме OpenCV, следниот чекор во нашиот проект вклучува


неговото поврзување со кодот. Креираме нов документ и ја додаваме OpenCV

_____________________________________________________________________________________

4
OpenCV| Проектна Задача
_____________________________________________________________________________________

библиотеката, што е основно за правилното функционирање на кодот. Ова отвора


врати кон напредни функционалности и го зголемува потенцијалот на проектот,
обезбедувајќи пристап до напредни алгоритми и апликации во областа на
компјутерската визија. Поврзувањето со OpenCV станува крајно значаен чекор во
секој нов проект.

Со успешно инсталирана OpenCV, започнуваме обработка на слики, видеа и


видеа во живо. За внес на слика, потребно е да ги добиеме адресата или името
пред да ја додадеме и прикажеме. Овој пристап не само што креира основа за
обработка на слики, туку и ја отвора патеката кон разновидни апликации во
областа на компјутерската визија.

1. `input_file = sys.argv[1]`: Оваа линија го зема аргументот од командниот ред


на позиција 1 (претпоставувајќи дека скриптата се извршува со команда
како `python script.py input_image.jpg`). Ова е патеката до сликата.
2. `img = cv2.imread(input_file)`: Ја вчитува избраната слика од
специфицираната датотека (`input_file`) користејќи ја imread функцијата на
OpenCV. Сликата која се добива како резултат се зачувува во
променливата `img`.
3. `cv2.imshow('Original', img)`: Оваа линија ја прикажува оригиналната слика
користејќи ја imshow функцијата на OpenCV. Првиот аргумент е името на
прозорецот, а вториот аргумент е сликата што треба да се прикаже (`img` во
овој случај).

_____________________________________________________________________________________

5
OpenCV| Проектна Задача
_____________________________________________________________________________________

Променливи параметри:

- Скриптата предполага дека патеката до влезната датотека се предава како


аргумент во командниот ред (sys.argv[1]). Можете да ја промените патеката
до датотеката или да предадете различна слика како аргумент при
извршување на скриптата.
- Името на прозорецот во cv2.imshow('Original', img) може да се промени од
'Original' во било кое име.

За да прикачиме видео постапката е слична:

1. `cap = cv.VideoCapture('video.avi')`: Создава објект VideoCapture наречен


"cap" кој е поврзан со видео датотеката 'video.avi'. Овој објект се користи за
снимање на видео кадри од одреден извор на видео.

Променлив Параметар:

- 'video.avi': Ова е името на видео датотеката од која ќе бидат снимани кадри.


Можете да го замените 'video.avi' со патеката до вашата посакувана видео
датотека. Ако вашата видео датотека е на различна локација или има
различно име, треба да се уверите дека го ажурирате овој параметар
соодветно. На пример, ако вашата видео датотека се вика 'my_video.mp4',
би користеле cap = cv.VideoCapture('my_video.mp4').

Реализацијата на видео во живо вклучува имплементација на функции кои ја


проверуваат функционалноста на камерата и ја прикажуваат поточната видео
содржината на екранот. Овие функции се дизајнирани да осигураат правилно
работење на камерата и оптимално прикажување на видеото, олеснувајќи го
_____________________________________________________________________________________

6
OpenCV| Проектна Задача
_____________________________________________________________________________________

искуството за користење на камерата. Ова техничко усовршување го обогатува


процесот на визуелна анализа и отвара пат кон иновации во областа на
компјутерската визија.

1. `cap = cv.VideoCapture(0)`: Иницијализира објект `VideoCapture` наречен


`cap` кој е поврзан со стандардната камера (индекс на камерата 0). Ова се
користи за снимање на видео кадри од камерата.
2. `if not cap.isOpened():`: Проверува дали камерата успешно се отвора. Ако
не, печати порака за грешка, завршува со програмата и покажува дека
камерата не се отвора.
3. `while True:`: Започнува бескраен циклус за непрекинато снимање и
обработка на видео кадри.
4. `ret, frame = cap.read()`: Снима кадар од камерата. Променливата `ret`
покажува дали кадарот успешно е снимен, а `frame` го содржи самиот
кадар.
5. `if not ret:`: Проверува дали кадарот не е успешно снимен. Ако е така,
излегува од циклусот.
6. `print("Неможе да се рендерира видеото, се гаси камерата")`: Печати
порака која покажува дека видеото не може да се рендерира и камерата се
исклучува.
7. `gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)`: Конвертира обоен кадар
во сива боја.
8. `cv.imshow('frame', gray)`: Го прикажува сивиот кадар во прозорец со име
'frame'.
_____________________________________________________________________________________

7
OpenCV| Проектна Задача
_____________________________________________________________________________________

9. `if cv.waitKey(1) == ord('q'):`: Чека настан на копче и ако притиснатото копче


е 'q', излегува од циклусот.
10. `cap.release()`: Го ослободува објектот `VideoCapture`, затворајќи го
поврзувањето со камерата.

Променливи Параметри:
- `0` во `cv.VideoCapture(0)`: Индекс на камерата. Ако имате повеќе од една
камера, можете да го промените индексот за да ја изберете другата камера.
- `'frame'` во `cv.imshow('frame', gray)`: Името на прозорецот во кој се
прикажува сликата. Можете да го промените ова име во било какво име по
ваш избор.

_____________________________________________________________________________________

8
OpenCV| Проектна Задача
_____________________________________________________________________________________

2.Анализа и промени со OpenCV


Како особено корисен инструмент во областа на компјутерската визија, ОpenCV
овозможува не само анализа, туку и трансформација и прикажување на
атрибутите, карактеристиките на сликите. Преку дефинирање на варијабли за
димензии, филтрирање, и изменување на боите, OpenCV обезбедува можности
за подобрување на компјутерската визија. Овие функционалности го обогатуваат
начинот на кој ги восприемаме и претставуваме сликите, отварајќи нови
перспективи во областа на компјутерската визија.
Во организацијата на визуелните аспекти на сликите, внесуваме три променливи,
една за секој аспект на димензиите. Оваа пристапна стратегија не само што го
трансформира техничкиот аспект на сликите, туку отвара пат за креативно
изразување и обогатување на визуелното искуство. Овој пристап станува
неизоставен дел од нашата способност за креативна манипулација во областа на
компјутерската визија.

1. Овој код извлекува и ги прикажува димензиите на сликата. Користи


атрибутот `shape` од NumPy низите за да добие висина (`h`), ширина (`w`) и
број на канали (`c`) на сликата. Вредностите потоа се печатат во читлив
формат.

Променливи параметри:
- `img`- Заменете го `img` со вистинското име на променливата која ја
претставува вашата слика.

- Прилагодете го текстот внатре во `print` изразот за да го промените начинот


на прикажување на димензиите на сликата.

_____________________________________________________________________________________

9
OpenCV| Проектна Задача
_____________________________________________________________________________________

Визуелната репрезентација,преставување на слики или документи неопходно е


да биде иницирана со применување на командата:

1. Оваа линија код отпечатува тип на податоци на променливата `img` во


конзола. Намената е да го открие типот на податоци која променливата ја
содржи, било дали станува збор за цел број, текст, листа или друг тип на
податоци.

Променливи параметри:
- `img`-Променете го кодот со замена на `img` со името на променливата која
сакате да ја проверите.

Промената на визуелниот аспект, или пикселизацијата, вклучува промена во


висината и ширината на документот, исфрлајќи ја потребноста за конкретна
големина на пикселите.

1. Читање на сликата - Слика со име 'paddington.png' се вчитува користејќи


`cv2.imread()` и се зачувува во променливата `input`.
2. Извлекување на димензии - Висината и ширината на влезната слика се
земаат со `input.shape`.
3. Поставување на нови димензии - Нови димензии (`w` за ширина и `h` за
висина) се поставуваат на 16x16.
4. Операции со промена на големината - Влезната слика се менува во новите
димензии со линеарна интерполација (`cv2.INTER_LINEAR`) и се зачувува
во `temp`.

_____________________________________________________________________________________

10
OpenCV| Проектна Задача
_____________________________________________________________________________________

5. Прикажување на сликитe - Оригиналните (`input`) и процесираните (`output`)


слики се прикажуваат со `cv2.imshow()`.

Променливи параметри:
- Патека до влезната слика - Смени го патеката во
`cv2.imread('images/paddington.png')` со патеката до саканата влезна слика.
- Нови димензии (`w` и `h`) - Промени ги вредностите на `w` и `h` за да ги
поставиш саканите ширина и висина на променетата слика.
- Методи на интерполација - Експериментирај со различни методи на
интерполација (на пример, `cv2.INTER_LINEAR`, `cv2.INTER_NEAREST`) со
адаптирање на параметарот `interpolation` во повикувањата на функциите
`cv2.resize()`.

_____________________________________________________________________________________

11
OpenCV| Проектна Задача
_____________________________________________________________________________________

3.Компјутерска визија на предмети на видео во живо


Со цел да се овозможи откривање на објекти во реално време, скриптата
почнува со иницијализација на видеокамерата и поставување на праговите за
сигурност. Овие параметри играат клучна улога во осигурувањето дека само
квалитетни снимки ќе бидат разгледани, а надминувањето на неуспешните снимки
се извршува со нивно прескокнување.

Откривањето на објекти е остварено со вчитувањето на специјално обучен


модел за откривање на објекти. Во овој случај го користиме моделот SSD (Single
Shot Multibox Detector) со MobileNetV3 архитектура. MobileNetV3 е познат по
својата леснa, но ефикаснa структура, идеална за апликации во реално време.

Следењето на класите што се откриваат е постигнато преку читање на имиња


на класите од датотеката 'coco.names'. Оваа датотека вклучува листа на објекти
за кои моделот е обучен, што овозможува јасна асоцијација со поимите за
предметите.

Самото откривање на објекти се извршува во непрекинат циклус. Во секоја


итерација, скриптата снима кадар од видеокамерата и го обработува во избраниот
модел. Ако го надминува бараниот минимален праг на квалитит тогаш продолжува
процесот на обработка, но ако не го задоволува условот за доволно квалитетна
снимка,кадар или слика тогаш процесот престанува.

Секој откриен објект е визуализиран преку цртање на ограничувачки квадрат со


соодветните координати. Лабелата за секој објект се добива преку префрлање од
'classNames' листата, што ја прави излезната слика почитлива и разбирлива.

_____________________________________________________________________________________

12
OpenCV| Проектна Задача
_____________________________________________________________________________________

Употребата на зелена боја и текст допринаесуваат кон подобрување на


визуелната репрезентација на откриените објекти.
Во постапката на усовршување на начинот на кој компјутерите ги „читаат“
објектите во сликите, е задолжително да извршиме повик кон соодветната
функција. Оваа акција е неопходна за одвивање на нашата програма за
распознавање на објекти.
Со овој чекор, ние конечно, го добиваме нашето долгосонувано решение -
програмата за спознавање на објекти. Откривањето и препознавањето на објекти
преку компјутерска визија станува можно, а нашата програма донесува визуелна
реализација на секојдневните објекти во светот на технологијата. Ова е само еден

_____________________________________________________________________________________

13
OpenCV| Проектна Задача
_____________________________________________________________________________________

мал, но значаен чекор во промената на начинот на кој компјутерите комуницираат


и ја интерпретираат околината.

1. `thres = 0.45`: Праг за ниво на доверба кој овозможува откривање на објект.


2. `nms_threshold = 0.2`: Праг за Не-Максимална Супресија (NMS) за филтрирање
на преклопувачките оградни кутии.
3. `cap = cv2.VideoCapture(0)`: Иницијализира објект VideoCapture поврзан со
стандардната камера (индекс 0).
4. `classNames`: Листа за зачувување на имињата на класите.
5. `classFile = 'coco.names'`: Датотека која содржи имиња на класи.

_____________________________________________________________________________________

14
OpenCV| Проектна Задача
_____________________________________________________________________________________

6. Читање на имињата на класите од датотеката и нивно зачувување во


`classNames`.
7. `configPath` и `weightsPath`: Патеки до конфигурационата датотека и
предодредени атрибути на моделот за откривање на објекти.
8. `net = cv2.dnn_DetectionModel(weightsPath, configPath)`: Иницијализира модел за
откривање на објекти.
9. Поставување на влезни параметри за моделот како големина, скала, средна
вредност и замена на бои.
10. Бескраен циклус за непрекинато снимање на кадри од камерата и извршување
на откривање на објекти.
11. Цртање на оградни кутии околу откриените објекти и прикажување на имињата
на класите на сликата.

Променливи Параметри:
- `thres = 0.45`: Можете да го прилагодите овој праг за да го промените нивото на
доверба за откривање на објекти.
- `nms_threshold = 0.2`: Можете да го менувате овој праг за контрола на Не-
Максимална Супресија.
- `cap = cv2.VideoCapture(0)`: Ако имате повеќе камери, можете да го промените
индексот (0) за да изберете различна камера.
- `classFile = 'coco.names'`: Патеката до датотеката со имиња на класите.
- `configPath` и `weightsPath`: Патеки до конфигурационата датотека и
предодредените атрибути. Ажурирајте ги овие патеки ако користите различен
модел.
- Визуелните параметри како бои, големина на фонт и дебелина може да се
прилагодат според посакувањата.

_____________________________________________________________________________________

15
OpenCV| Проектна Задача
_____________________________________________________________________________________

Заклучок:
Можеме да заклучиме,дека OpenCV проектите ја истакнуваат универзалноста и
корисноста на OpenCV во различни области на компјутерската визија. OpenCV,
отворена софтверска библиотека, се покажа неизмерно корисна за откривање на
објекти во реално време, препознавање на лица и обработка на слики.

Пристапноста и едноставната употреба на OpenCV го прават вистински избор за


креатори, програмери, иноватори,истражувачи, независно од нивното искуство.
Неговата компатибилност со различни оперативни системи и поддршката за
повеќе програмски јазици ги зголемува неговите можности за адаптација во
различни области.

Отворената природа на OpenCV ја поттикнува соработката и иновациите,


овозможувајќи непрекинат развој и ажурирање, со што OpenCV се качува на
врвот на технологиите за компјутерска визија. Неговите многубројни можности,
заедно со големата и активна заедница, го прават OpenCV неизоставен алат за
истражувачи, развивачи и ентузијасти што истражуваат безброј можности во
областа на компјутерската визија.

_____________________________________________________________________________________

16
OpenCV| Проектна Задача
_____________________________________________________________________________________

Користена литература:

https://opencv.org/
https://en.wikipedia.org/wiki/OpenCV
https://github.com/opencv/opencv
https://www.geeksforgeeks.org/opencv-overview/
https://www.analyticsvidhya.com/blog/2021/09/a-beginners-guide-to-image-processing-with-
opencv-and-python/
https://www.oreilly.com/library/view/python-machine-learning/9781786464477/ch09s02.html
https://docs.opencv.org/4.x/dd/d43/tutorial_py_video_display.html
https://www.computervision.zone/topic/basic-code/

_____________________________________________________________________________________

17

You might also like