opencv

Основи на компютърната визия

Основи на компютърната визия
Opencv (библиотека за компютърно зрение с отворен код) е модул на Python, използван за компютърно зрение. OpenCV е безплатен модул с отворен код, който съдържа стотици алгоритми за изпълнение на различни задачи. Всичко от разпознаване на лица до откриване на движение може да се направи с помощта на OpenCV. В това ръководство обаче ще разгледаме основите на OpenCV.

Първо, нека инсталираме OpenCV:

pip3 инсталирайте opencv-python

Прочетете и покажете изображения

Първото нещо, което трябва да научим, е да четем и пишем изображения. Четенето на файл с изображение, въвеждането на пълния път към файла или името на файла (ако файлът е в папката python) и добавяне на флаг се извършва с помощта на cv2.непрочетено (). Флагът може да приеме стойността 1 (за цветно изображение), 0 (за сивото) или -1 (за цветно изображение с канали). Може да се използва cv2.функция imshow () за показване на изображението; тук се предават два аргумента - име за изображението и изображението за показване. След това използваме cv2.функция waitKey () за изчакване на въвеждане от клавиатурата; a 0 за cv2.Функцията waitKey (0) предполага постоянно време на изчакване. От друга страна, cv2.Унищожи всичкиWindows () функция ще затвори прозорците.

Това ще прочете и отвори изображение и ще го държи отворено, докато не го затворите:

импортиране на cv2
изображение = cv2.imread ('LinuxLogo.jpg ', 1)
cv2.imshow ('изображение', изображение)
cv2.waitKey (0)
cv2.Унищожи всичкиWindows ()

Напишете изображения

Използваме cv2.imwrite () функция за запазване на изображение. Тази функция отнема два параметъра - име за запазване на изображението и изображението, което искате да запазите.

импортиране на cv2
изображение = cv2.imread ('идентифицирам.jpg ', -1)
cv2.imwrite ('save_image.png ', изображение)

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

За да заснемем видеоклипове, започваме с инициализиране на cv2.Функция VideoCapture (). След това използваме цикъл “while”, за да продължим да заснемаме видеото. Докато потребителят не натиска клавиша за изход, ние можем да прочетем кадрите и да ги покажем с помощта на read () и cv2.функция imshow (). След това поставяме ключ за прекъсване, за да излезем от цикъла; в този случай числото 27 е ESC ключ. Ако потребителят натисне клавиша ESC, те излизат от цикъла. След като излезете от цикъла, е необходимо да освободите улавянето.

импортиране на numpy като np
импортиране на cv2
улавяне = cv2.VideoCapture (0)
while (Вярно):
ret, frame = улавяне.Прочети()
cv2.imshow ('кадър', кадър)
ако cv2.waitKey (1) & 0xFF == 27:
почивка
улавяне.освобождаване ()
cv2.Унищожи всичкиWindows ()

Възпроизвеждане на видео файл

Възпроизвеждането на видео файл е като заснемане на видео от уеб камера. За да направите това, cv2.Използва се функцията VideoCapture (); след това към функцията се добавя името на видео файла, който искате да възпроизведете. Цикълът „while“ се използва отново, а бутонът за изход, в този случай, е бутонът „s“ на клавиатурата. Това ще отвори и възпроизведе видео файла и ще го затвори, когато потребителят натисне бутона „s“.

импортиране на numpy като np
импортиране на cv2
улавяне = cv2.VideoCapture ("Megamind.avi ")
while (Вярно):
ret, frame = улавяне.Прочети()
cv2.imshow ('кадър', кадър)
ако cv2.waitKey (1) & 0xFF == ord ("s"):
почивка
улавяне.освобождаване ()
cv2.Унищожи всичкиWindows ()

Запазване на видео файл

Запазването на видео файл изисква малко повече работа. Cv2.Функцията VideoWriter () отнема общо 4 параметъра - името на изходния файл, кода FourCC, броя на кадрите в секунда и размера на кадъра. Освен това човек трябва да посочи кода на FourCC, който е видео кодекът, използващ cv2.Функция VideoWriter_fourcc (). Използване на улавянето.isOpened (), четем кадъра и записваме изходния кадър. Можем да покажем и кадрите, използвайки cv2.функция imshow (). След това използваме cv2.waitKey (1) & 0xFF == ord ('s'), за да зададете ключ за изход. В този случай, ако потребителят натисне бутона „s“, той ще излезе от цикъла и след това ще освободи улавянето и изхода и ще затвори прозорците.

импортиране на numpy като np
импортиране на cv2
улавяне = cv2.VideoCapture (0)
fourcc = cv2.VideoWriter_fourcc (* 'XVID')
изход = cv2.VideoWriter ('изход.avi ', четири кубика, 30.0, (640 480))
докато (улавяне.isOpened ()):
ret, frame = улавяне.Прочети()
изход.запис (рамка)
cv2.imshow ('кадър', кадър)
ако cv2.waitKey (1) & 0xFF == ord ('s'):
почивка
улавяне.освобождаване ()
изход.освобождаване ()
cv2.Унищожи всичкиWindows ()

Рисуване на линии, кръгове, правоъгълници и текстове

Първото нещо, което ще се научим да рисуваме, е линия. За да нарисуваме линия, ние просто използваме cv2.функция line (). Функцията отнема 5 аргумента - видео източник, начална точка, крайна точка, цвят и дебелина на линията. В следния случай решихме да нарисуваме правоъгълна граница (съставена от 4 реда):

импортиране на cv2
улавяне = cv2.VideoCapture ('vtest.avi ')
докато е вярно:
ret, frame = улавяне.Прочети()
width = int (улавяне.вземете (3))
височина = int (улавяне.вземете (4))
линия1 = cv2.линия (рамка, (0,0), (0, височина), (255, 255, 255), 10)
линия2 = cv2.линия (линия1, (0, 0), (ширина, 0), (255, 255, 255), 10)
линия3 = cv2.линия (линия2, (0, височина), (ширина, височина), (255, 255, 255), 10)
линия4 = cv2.линия (линия3, (ширина, 0), (ширина, височина), (255, 255, 255), 10)
cv2.imshow ('кадър', ред4)
ако cv2.waitKey (40) == ord ('q'):
почивка
улавяне.освобождаване ()
cv2.Унищожи всичкиWindows ()

След това ще нарисуваме кръг и правоъгълник на видеото. За да нарисуваме правоъгълник, използваме cv2.rectangle () функция, която отнема 5 аргумента, подобно на реда. За да нарисуваме кръг, използваме функцията cv2.кръг (), който също отнема 5 аргумента - видеото източник, централната точка, радиусът, цветът и дебелината.

импортиране на cv2
улавяне = cv2.VideoCapture ('vtest.avi ')
докато е вярно:
ret, frame = улавяне.Прочети()
width = int (улавяне.вземете (3))
височина = int (улавяне.вземете (4))
правоъгълник = cv2.правоъгълник (рамка, (150, 15), (650, 550), (0,0,0), 11)
cv2.кръг (правоъгълник, (250, 250), 60, (0,0,0), 11)
cv2.imshow ('кадър', кадър)
ако cv2.waitKey (40) == ord ('q'):
почивка
улавяне.освобождаване ()
cv2.Унищожи всичкиWindows ()

Сега, нека добавим малко текст към видеото, което имаме. За целта трябва да посочим шрифт; тук избрахме cv2.FONT_HERSHEY_SIMPLEX. След като шрифтът бъде избран, можем да използваме функцията cv2.putText (), за да свършите останалото. Cv2.putText () отнема 8 аргумента - изходното видео, текстът, който искате да напишете, позицията, където искате, шрифтът, увеличението, цветът, дебелината и cv2.LINE_AA (което прави всичко да изглежда по-добре).

импортиране на cv2
улавяне = cv2.VideoCapture ('vtest.avi ')
докато е вярно:
ret, frame = улавяне.Прочети()
width = int (улавяне.вземете (3))
височина = int (улавяне.вземете (4))
шрифт = cv2.FONT_HERSHEY_SIMPLEX
изображение = cv2.putText (рамка, "VTEST.AVI ", (200, 200), шрифт, 4, (0,0,0), 5, cv2.LINE_AA)
cv2.imshow ('рамка', изображение)
ако cv2.waitKey (40) == ord ('q'):
почивка
улавяне.освобождаване ()
cv2.Унищожи всичкиWindows ()

OpenCV е способен на много велики неща, където човек трябва да започне някъде. Може да се научи да създава и запазва изображения и видеоклипове. В този урок се научихме да правим самите основи на компютърното зрение.

Честито кодиране!

Контролирайте и управлявайте движението на мишката между множество монитори в Windows 10
Двоен дисплей на мишката ви позволява да контролирате и конфигурирате движението на мишката между множество монитори, като забавя движенията му близо ...
WinMouse ви позволява да персонализирате и подобрите движението на показалеца на мишката на компютър с Windows
Ако искате да подобрите функциите по подразбиране на показалеца на мишката, използвайте безплатна програма WinMouse. Той добавя още функции, за да ви ...
Бутонът на левия бутон на мишката не работи в Windows 10
Ако използвате специална мишка с вашия лаптоп или настолен компютър, но бутонът на левия бутон на мишката не работи на Windows 10/8/7 по някаква причи...