Първо, нека инсталираме 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 е способен на много велики неща, където човек трябва да започне някъде. Може да се научи да създава и запазва изображения и видеоклипове. В този урок се научихме да правим самите основи на компютърното зрение.
Честито кодиране!