opencv

Computervisie De basis

Computervisie De basis
Opencv (Open Source Computer Vision Library) is een Python-module die wordt gebruikt voor computervisie. OpenCV is een gratis, open-source module die honderden algoritmen bevat om verschillende taken uit te voeren. Alles van gezichtsherkenning tot bewegingsdetectie kan worden gedaan met OpenCV. In deze gids zullen we echter kijken naar de basisprincipes van OpenCV.

Laten we eerst OpenCV installeren:

pip3 installeer opencv-python

Afbeeldingen lezen en weergeven

Het eerste dat we moeten leren, is afbeeldingen lezen en schrijven. Het lezen van een afbeeldingsbestand, het invoeren van het volledige pad naar het bestand of de bestandsnaam (als het bestand zich in de python-map bevindt), en het toevoegen van een vlag gebeurt met cv2.imread(). De vlag kan de waarde 1 hebben (voor een kleurenafbeelding), 0 (voor grijswaarden) of -1 (voor kleurenafbeelding met kanalen). Men kan de cv2 . gebruiken.imshow() functie om de afbeelding te tonen; hier worden twee argumenten doorgegeven - een naam voor de afbeelding en de afbeelding die moet worden weergegeven. Vervolgens gebruiken we de cv2.waitKey() functie om te wachten op een toetsenbordinvoer; een 0 voor de cv2.waitKey(0) functie impliceert een permanente wachttijd. Aan de andere kant, de cv2.De functie destroyAllWindows() sluit de vensters.

Hiermee wordt een afbeelding gelezen en geopend en blijft de afbeelding open totdat u deze sluit:

import cv2
afbeelding = cv2.imread('LinuxLogo.jpg', 1)
cv2.imshow('afbeelding', afbeelding)
cv2.waitKey(0)
cv2.vernietigenAlleWindows()

Afbeeldingen schrijven

We gebruiken de cv2.imwrite() functie om een ​​afbeelding op te slaan. Deze functie heeft twee parameters - een naam om de afbeelding op te slaan en de afbeelding die u wilt opslaan.

import cv2
afbeelding = cv2.imread('identificeer'.jpg', -1)
cv2.imwrite('save_image.png', afbeelding)

Video vastleggen vanaf webcam

Om video's vast te leggen, beginnen we met het initialiseren van de cv2.VideoCapture() functie. We gebruiken dan een "while"-lus om door te gaan met het vastleggen van de video. Hoewel de gebruiker niet op de exit-toets drukt, kunnen we de frames lezen en ze tonen met behulp van de read() en cv2.imshow() functie. We hebben vervolgens een "break" -toets ingevoerd om de lus te verlaten; in dit geval is het getal 27 de ESC-toets. Als de gebruiker op de ESC-toets drukt, breken ze uit de lus. Eenmaal uit de lus, is het noodzakelijk om de opname vrij te geven.

importeer numpy als np
import cv2
vastleggen = cv2.Video-opname(0)
terwijl (waar):
ret, frame = vastleggen.lezen()
cv2.imshow('frame', frame)
als cv2.waitKey(1) & 0xFF == 27:
breken
gevangen nemen.vrijlating()
cv2.vernietigenAlleWindows()

Een videobestand afspelen

Het afspelen van een videobestand is als het opnemen van een video van een webcam. Om dit te doen, moet de cv2.VideoCapture() functie wordt gebruikt; de naam van het videobestand dat u wilt afspelen wordt vervolgens toegevoegd aan de functie. De "while"-lus wordt opnieuw gebruikt en de exit-toets is in dit geval de "s" -toets op het toetsenbord. Dit opent en speelt het videobestand af en sluit het wanneer de gebruiker op de "s"-toets drukt.

importeer numpy als np
import cv2
vastleggen = cv2.VideoCapture ("Megamind".avi")
terwijl (waar):
ret, frame = vastleggen.lezen()
cv2.imshow('frame', frame)
als cv2.waitKey(1) & 0xFF == ord("s"):
breken
gevangen nemen.vrijlating()
cv2.vernietigenAlleWindows()

Een videobestand opslaan

Het opslaan van een videobestand vereist wat meer werk. de cv2.De functie VideoWriter() heeft in totaal 4 parameters - de naam van het uitvoerbestand, de FourCC-code, het aantal frames per seconde en de framegrootte. Verder moet men de FourCC-code specificeren, wat de videocodec is die de cv2 . gebruikt.VideoWriter_fourcc() functie. De opname gebruiken.isOpened(), we lezen het frame en schrijven het uitvoerframe. We kunnen de frames ook weergeven met de cv2.imshow() functie. Vervolgens gebruiken we cv2.waitKey(1) & 0xFF == ord('s') om een ​​exit-toets in te stellen. In dit geval, als de gebruiker op de "s"-toets drukt, zullen ze de lus verlaten en vervolgens de opname en de uitvoer loslaten en de vensters sluiten.

importeer numpy als np
import cv2
vastleggen = cv2.Video-opname(0)
fourcc = cv2.VideoWriter_fourcc(*'XVID')
uitgang = cv2.VideoWriter('uitvoer.avi',fourcc, 30.0, (640.480))
terwijl (vangen).is geopend()):
ret, frame = vastleggen.lezen()
uitvoer.schrijven (kader)
cv2.imshow('frame',frame)
als cv2.waitKey(1) & 0xFF == ord('s'):
breken
gevangen nemen.vrijlating()
uitvoer.vrijlating()
cv2.vernietigenAlleWindows()

Lijnen, cirkels, rechthoeken en teksten tekenen

Het eerste dat we zullen leren tekenen is een lijn. Om een ​​lijn te trekken, gebruiken we gewoon de cv2.line() functie. De functie heeft 5 argumenten - de bronvideo, het startpunt, het eindpunt, de kleur en de lijndikte. In het volgende geval hebben we besloten om een ​​rechthoekige rand te tekenen (bestaande uit 4 lijnen):

import cv2
vastleggen = cv2.VideoCapture('vtest.avi')
terwijl waar:
ret, frame = vastleggen.lezen()
breedte = int(capture.krijgen(3)
hoogte = int(capture.krijgen(4))
lijn1 = cv2.lijn(frame, (0,0), (0,hoogte), (255, 255, 255),10)
lijn2 = cv2.lijn(lijn1, (0, 0), (breedte,0),(255, 255, 255), 10)
regel3 = cv2.lijn(lijn2, (0,hoogte), (breedte, hoogte), (255, 255, 255), 10)
regel4 = cv2.lijn(regel3, (breedte, 0), (breedte, hoogte), (255, 255, 255), 10)
cv2.imshow('frame', regel4)
als cv2.waitKey(40) == ord('q'):
breken
gevangen nemen.vrijlating()
cv2.vernietigenAlleWindows()

Vervolgens tekenen we zowel een cirkel als een rechthoek op de video. Om een ​​rechthoek te tekenen, gebruiken we de cv2.rechthoek() functie, die 5 argumenten nodig heeft, net zoals de regel. Om een ​​cirkel te tekenen, gebruiken we de functie cv2.circle(), waarvoor ook 5 argumenten nodig zijn: de bronvideo, het middelpunt, de straal, de kleur en de dikte.

import cv2
vastleggen = cv2.VideoCapture('vtest.avi')
terwijl waar:
ret, frame = vastleggen.lezen()
breedte = int(capture.krijgen(3)
hoogte = int(capture.krijgen(4))
rechthoek = cv2.rechthoek(kader, (150, 15), (650, 550), (0,0,0), 11)
cv2.cirkel (rechthoek, (250, 250), 60, (0,0,0), 11)
cv2.imshow('frame', frame)
als cv2.waitKey(40) == ord('q'):
breken
gevangen nemen.vrijlating()
cv2.vernietigenAlleWindows()

Laten we nu wat tekst toevoegen aan de video die we hebben. Om dit te doen, moeten we een lettertype specificeren; hier kozen we cv2.FONT_HERSHEY_SIMPLEX. Zodra het lettertype is geselecteerd, kunnen we de functie cv2 . gebruiken.putText() om de rest te doen. Cv2.putText() heeft 8 argumenten - de bronvideo, de tekst die u wilt schrijven, de positie waar u het wilt, het lettertype, de vergroting, de kleur, de dikte en cv2.LINE_AA (waardoor alles er beter uitziet).

import cv2
vastleggen = cv2.VideoCapture('vtest.avi')
terwijl waar:
ret, frame = vastleggen.lezen()
breedte = int(capture.krijgen(3)
hoogte = int(capture.krijgen(4))
lettertype = cv2.FONT_HERSHEY_SIMPLEX
afbeelding = cv2.putText(frame; "VTEST .".AVI", (200, 200), lettertype, 4, (0,0,0), 5, cv2.LINE_AA)
cv2.imshow('frame', afbeelding)
als cv2.waitKey(40) == ord('q'):
breken
gevangen nemen.vrijlating()
cv2.vernietigenAlleWindows()

OpenCV is tot veel geweldige dingen in staat waar je ergens moet beginnen. Het kan leren om afbeeldingen en video's te maken en op te slaan. In deze zelfstudie hebben we de basisprincipes van computervisie geleerd.

Gelukkig Coderen!

Wijs uw muisknoppen anders toe voor verschillende software met X-Mouse Button Control
Misschien heeft u een tool nodig waarmee u de bediening van uw muis kunt veranderen bij elke applicatie die u gebruikt. Als dit het geval is, kunt u e...
Microsoft Sculpt Touch draadloze muis Review
Ik las onlangs over de Microsoft Sculpt Touch draadloze muis en besloot hem te kopen. Nadat ik het een tijdje had gebruikt, besloot ik mijn ervaring e...
AppyMouse trackpad en muisaanwijzer op het scherm voor Windows-tablets
Tabletgebruikers missen vaak de muisaanwijzer, vooral wanneer ze gewend zijn om de laptop te gebruiken. Het touchscreen Smartphones en tablets hebben ...