опенцв

Основе рачунарске визије

Основе рачунарске визије
Опенцв (Опен Соурце Цомпутер Висион Либрари) је Питхон модул који се користи за рачунарски вид. ОпенЦВ је бесплатни модул отвореног кода који садржи стотине алгоритама за извршавање различитих задатака. Било шта, од препознавања лица до откривања покрета, може се урадити помоћу ОпенЦВ-а. Међутим, у овом водичу ћемо погледати основе ОпенЦВ-а.

Прво, инсталирајмо ОпенЦВ:

пип3 инсталирајте опенцв-питхон

Читајте и приказујте слике

Прво што треба да научимо је читање и писање слика. Читање сликовне датотеке, унос пуне путање до датотеке или имена датотеке (ако је датотека у директоријуму питхон) и додавање заставице врши се помоћу цв2.непрочитано (). Ознака може имати вредност 1 (за слику у боји), 0 (за сиву скалу) или -1 (за слику у боји са каналима). Може се користити цв2.функција имсхов () за приказ слике; овде се преносе два аргумента - назив слике и слика коју треба приказати. Даље користимо цв2.функција ваитКеи () за чекање уноса са тастатуре; а 0 за цв2.функција ваитКеи (0) подразумева трајно време чекања. С друге стране, цв2.униселлАллВиндовс () функција ће затворити прозоре.

Ово ће прочитати и отворити слику и држати је отвореном док је не затворите:

увоз цв2
слика = цв2.имреад ('ЛинукЛого.јпг ', 1)
цв2.имсхов ('слика', слика)
цв2.ваитКеи (0)
цв2.уништитиАллВиндовс ()

Напишите слике

Користимо цв2.имврите () функција за спремање слике. Ова функција узима два параметра - назив за чување слике и слику коју желите да сачувате.

увоз цв2
слика = цв2.имреад ('идентификовати.јпг ', -1)
цв2.имврите ('саве_имаге.пнг ', слика)

Снимите видео са веб камере

Да бисмо снимили видео записе, започињемо иницијализацијом цв2.Функција ВидеоЦаптуре (). Затим користимо петљу „вхиле“ да наставимо са снимањем видео записа. Иако корисник не притиска тастер за излаз, можемо читати оквире и приказивати их помоћу реад () и цв2.функција имсхов (). Затим ставимо тастер „бреак“ да изађемо из петље; у овом случају, број 27 је ЕСЦ кључ. Ако корисник притисне тастер ЕСЦ, они излазе из петље. Кад изађете из петље, потребно је отпустити хватање.

увоз нумпи као нп
увоз цв2
хватање = цв2.ВидеоЦаптуре (0)
вхиле (Тачно):
рет, фраме = снимање.читати()
цв2.имсхов ('оквир', оквир)
ако је цв2.ваитКеи (1) & 0кФФ == 27:
пауза
хватање.издање()
цв2.уништитиАллВиндовс ()

Репродукција видео датотеке

Репродукција видео датотеке је попут снимања видео записа са веб камере. Да бисте то урадили, цв2.Користи се функција ВидеоЦаптуре (); затим се функцији додаје име видео датотеке коју желите да репродукујете. Поново се користи петља „вхиле“, а тастер за излаз је, у овом случају, тастер „с“ на тастатури. Ово ће отворити и репродуковати видео датотеку и затворити је када корисник притисне тастер „с“.

увоз нумпи као нп
увоз цв2
хватање = цв2.ВидеоЦаптуре („Мегаминд.ави ")
док (Тачно):
рет, фраме = снимање.читати()
цв2.имсхов ('оквир', оквир)
ако је цв2.ваитКеи (1) & 0кФФ == орд ("с"):
пауза
хватање.издање()
цв2.уништитиАллВиндовс ()

Чување видео датотеке

Чување видео датотеке захтева мало више посла. Тхе цв2.Функција ВидеоВритер () узима укупно 4 параметра - име излазне датотеке, ФоурЦЦ код, број сличица у секунди и величину оквира. Даље, мора се навести ФоурЦЦ код, који је видео кодек који користи цв2.Функција ВидеоВритер_фоурцц (). Користећи хватање.исОпенед (), читамо оквир и записујемо излазни оквир. Оквире такође можемо приказати помоћу цв2.функција имсхов (). Затим користимо цв2.ваитКеи (1) & 0кФФ == орд ('с') за постављање излазног кључа. У овом случају, ако корисник притисне тастер „с“, изаћи ће из петље, а затим отпустити хватање и излаз и затворити прозоре.

увоз нумпи као нп
увоз цв2
хватање = цв2.ВидеоЦаптуре (0)
фоурцц = цв2.ВидеоВритер_фоурцц (* 'КСВИД')
излаз = цв2.ВидеоВритер ('излаз.ави ', четири кубика, 30.0, (640.480))
док (хватање.исОпенед ()):
рет, фраме = снимање.читати()
излаз.запис (оквир)
цв2.имсхов ('оквир', оквир)
ако је цв2.ваитКеи (1) & 0кФФ == орд ('с'):
пауза
хватање.издање()
излаз.издање()
цв2.уништитиАллВиндовс ()

Цртање линија, кругова, правоугаоника и текстова

Прво што ћемо научити да цртамо је линија. Да бисмо нацртали линију, једноставно користимо цв2.функција лине (). Функција узима 5 аргумената - изворни видео, почетну тачку, завршну тачку, боју и дебљину линије. У следећем случају одлучили смо да нацртамо правоугаону границу (коју чине 4 линије):

увоз цв2
хватање = цв2.ВидеоЦаптуре ('втест.ави ')
вхиле Труе:
рет, фраме = снимање.читати()
видтх = инт (снимање.добити (3))
висина = инт (хватање.добити (4))
линија1 = цв2.линија (оквир, (0,0), (0, висина), (255, 255, 255), 10)
линија2 = цв2.линија (линија1, (0, 0), (ширина, 0), (255, 255, 255), 10)
линија3 = цв2.линија (линија2, (0, висина), (ширина, висина), (255, 255, 255), 10)
линија4 = цв2.линија (линија3, (ширина, 0), (ширина, висина), (255, 255, 255), 10)
цв2.имсхов ('оквир', ред4)
ако је цв2.ваитКеи (40) == орд ('к'):
пауза
хватање.издање()
цв2.уништитиАллВиндовс ()

Затим ћемо на видео снимку нацртати и круг и правоугаоник. За цртање правоугаоника користимо цв2.правоугаоник () функција, која узима 5 аргумената слично линији. За цртање круга користимо функцију цв2.цирцле (), који такође узима 5 аргумената - изворни видео, средишњу тачку, радијус, боју и дебљину.

увоз цв2
хватање = цв2.ВидеоЦаптуре ('втест.ави ')
вхиле Труе:
рет, фраме = снимање.читати()
видтх = инт (снимање.добити (3))
висина = инт (хватање.добити (4))
правоугаоник = цв2.правоугаоник (оквир, (150, 15), (650, 550), (0,0,0), 11)
цв2.круг (правоугаоник, (250, 250), 60, (0,0,0), 11)
цв2.имсхов ('оквир', оквир)
ако је цв2.ваитКеи (40) == орд ('к'):
пауза
хватање.издање()
цв2.уништитиАллВиндовс ()

Хајде сада да додамо мало текста у видео запис који имамо. Да бисмо то урадили, треба да одредимо фонт; овде смо изабрали цв2.ФОНТ_ХЕРСХЕИ_СИМПЛЕКС. Када је фонт изабран, можемо користити функцију цв2.путТект () да уради остало. Цв2.путТект () узима 8 аргумената - изворни видео, текст који желите да напишете, положај на коме желите, фонт, увећање, боју, дебљину и цв2.ЛИНЕ_АА (због чега све изгледа боље).

увоз цв2
хватање = цв2.ВидеоЦаптуре ('втест.ави ')
вхиле Труе:
рет, фраме = снимање.читати()
видтх = инт (снимање.добити (3))
висина = инт (хватање.добити (4))
фонт = цв2.ФОНТ_ХЕРСХЕИ_СИМПЛЕКС
слика = цв2.путТект (фраме, "ВТЕСТ.АВИ ", (200, 200), фонт, 4, (0,0,0), 5, цв2.ЛИНЕ_АА)
цв2.имсхов ('оквир', слика)
ако је цв2.ваитКеи (40) == орд ('к'):
пауза
хватање.издање()
цв2.уништитиАллВиндовс ()

ОпенЦВ је способан за многе велике ствари где се негде мора започети. То би могло бити учење стварања и чувања слика и видео записа. У овом упутству научили смо да радимо основе рачунарског вида.

Хаппи Цодинг!

5 најбољих аркадних игара за Линук
У данашње време рачунари су озбиљне машине које се користе за игре на срећу. Ако не успете да добијете нови високи резултат, знаћете на шта мислим. У ...
Битка за Веснотх 1.13.6 Развој објављен
Битка за Веснотх 1.13.6 објављено прошлог месеца, шесто је развојно издање у издању 1.13.к сериес и доноси низ побољшања, посебно корисничког интерфеј...
Како инсталирати Леагуе Оф Легендс на Убунту 14.04
Ако сте љубитељ Леагуе оф Легендс, ово је прилика да тестирате Леагуе оф Легендс. Имајте на уму да је ЛОЛ подржан на ПлаиОнЛинук ако сте корисник лину...