Мазмұны:

OpenCV көмегімен қарапайым түсті анықтау: 6 қадам
OpenCV көмегімен қарапайым түсті анықтау: 6 қадам

Бейне: OpenCV көмегімен қарапайым түсті анықтау: 6 қадам

Бейне: OpenCV көмегімен қарапайым түсті анықтау: 6 қадам
Бейне: Урок №6. Контуры. Beyond Robotics 2024, Маусым
Anonim
OpenCV көмегімен қарапайым түсті анықтау
OpenCV көмегімен қарапайым түсті анықтау

Сәлем! Бүгін мен OpenCV мен python көмегімен тірі бейнеден түс табудың қарапайым әдісін көрсетемін.

Негізінде мен қажетті түстің фондық фреймде бар -жоғын тексеремін, ал OpenCV модульдерін қолдана отырып, мен сол аймақты маскирлеп, сонымен қатар кадрды көрсетемін.

1 -қадам: тақырып файлдары

Тақырып файлдары
Тақырып файлдары

Енді мен мұнда екі тақырыптық файлды қолдандым, атап айтқанда cv2 және NumPy. Негізінде cv2 - бұл OpenCV кітапханасы, ол кодтардағы командаларды қолдану кезінде маңызды барлық c ++ файлдарын жүктейді (онда барлық анықтамалар бар).

Ал Numpy - бұл көп өлшемді массивті сақтау үшін қажет питон кітапханасы. Біз түс ауқымының координаттарын сақтау үшін қолданатын боламыз.

Ал numpy ретінде np негізінен біздің кодты numpy орнына np пайдалану арқылы біраз қысқартуға көмектеседі.

2 -қадам: бейнені түсіру

Бейне түсіру
Бейне түсіру

Бұл питонды пайдалану кезінде өте қарапайым. Мұнда біз кадрларды жазуды бастайтындай етіп, бейне жазғышты қосуымыз керек.

Енді VideoCapture ішіндегі мән камераны көрсетеді, менің жағдайда камера ноутбукке қосылған, сондықтан 0.

Сіз қайталама камера үшін 1 -ге ұқсас бола аласыз және т.б. VideoCapture ол үшін объект жасайды.

3 -қадам: кадрды түсіру және түсін анықтау

Кадрды түсіру және түсін анықтау
Кадрды түсіру және түсін анықтау

Енді мұнда біз суретті шығаруға көмектесетін бейненің жылдам кадрын түсіру үшін бірдеңе істеуіміз керек және біз бұл талап бойынша жұмыс жасай аламыз.

«while» циклы бізге циклды біздің қажетті уақытқа дейін жүргізуге көмектеседі. Енді «_, frame = cap.read ()» кадрдың түсірілгенін тексеру үшін қолданылады және оны сақтайды. «cap.read () логикалық айнымалы болып табылады және егер рамка дұрыс оқылса және егер кадрлар алынбаса, ол қатені көрсетпесе, ақиқатты қайтарады, сіз жай None аласыз.

Енді 11 -ші және 12 -ші жолдар негізінен біз анықтауымыз керек түс ауқымын анықтайды. Бұл үшін мен көк түске үйрендім.

Сіз сол түс үшін BGR мәндерін теру үшін кез келген түспен жалғастыра аласыз. Нақты әлемде белгілі бір түсті анықтау біздің мақсатқа қызмет етпейді, өйткені біз ауқымды анықтайтын көк түс диапазонын анықтайтын боламыз.

Ол үшін мен BGR төменгі және жоғарғы BGR мәндерін сақтайтын екі айнымалыны анықтадым.

4 -қадам: маска мен экстракция

Маска мен экстракция
Маска мен экстракция

Енді жақтауды маскировкалау мен кадрдың түсін алудың негізгі міндеті келді. Мен маска жасау үшін OpenCV кітапханасында бар алдын ала анықталған командаларды қолдандым. Негізінде маскировка - бұл кадрдың бір бөлігін алып тастау процесі, яғни біз BGR түсінің мәндері анықталған түс ауқымында жатпайтын пиксельдерді алып тастаймыз және бұл cv2.inRange арқылы жүзеге асады. Содан кейін біз түс ауқымын пиксель мәндеріне байланысты маскированный суретке қолданамыз және ол үшін cv2.bitwise_and қолданамыз, ол маска мен түс диапазонының мәндеріне байланысты маскирленген аймаққа түстерді береді.

Cv2 сілтемесі. bitwise_and:

5 -қадам: Соңында көрсету

Ақырында көрсету!
Ақырында көрсету!

Мұнда мен әр кадрды кескін ретінде көрсету үшін cv2.imshow () негізгі құралын қолдандым. Менде кадрлық деректер айнымалыда сақталғандықтан, мен оларды imshow () арқылы ала аламын. Мұнда мен түпнұсқа, бетперде және түрлі -түсті үш кадрды көрсеттім.

Енді уақыт циклінен шығу керек. Бұл үшін біз cv2.wait. Key () енгізе аламыз. Негізінен ол жауап бермес бұрын күту уақытын көрсетеді. Егер сіз 0 -ден өтсеңіз, ол шексіз күтеді және 0xFF архитектураның 64 биттік екенін айтады. «ord ()» басылған кезде үзіліс командасын if блогында орындайтын және циклден шығатын таңбаны көрсетеді.

Содан кейін cap.release () бейнежазғышты жабады және cv2.destroyAllWindows () барлық ашылған терезелерді жабады.

Егер сізде қандай да бір мәселе болса, маған хабарлаңыз.

Бастапқы кодқа сілтеме:

Ұсынылған: