Ukategorisert

Introduksjon til datamaskinvisjon med OpenCV -biblioteket på Linux

Introduksjon til datamaskinvisjon med OpenCV -biblioteket på Linux

Abstrakt

Hensikten med dette dokumentet er å hjelpe en leser med å komme i gang med Computer Vision Library OpenCV på Linux -systemet. OpenCCV er et bibliotek med flere plattformer, men denne artikkelen vil bare være fokusert på OpenCV ved bruk OpenCV er riktig installert som Mac OS, MS Windows og etc.). Leseren vil bli guidet gjennom en trinn-for-trinns guide for hvordan du installerer og bruker noen av de grunnleggende funksjonene til OpenCV-biblioteket, for eksempel å vise bilder, spille en video eller bruke et videokamera for å behandle en videoinngangsstrøm.

Konvensjoner brukt i denne artikkelen:

Introduksjon

Med enkle ord er en datasyn et vitenskapelig felt som prøver å gi et syn til maskinen. Dette vitenskapelige feltet har utvidet seg raskt de siste årene. Blant forskere er denne veksten på grunn av mange forbedringer av synalgoritmer og blant datamaskinvisjonen hobbyister skyldes dette billigere maskinvarekomponenter og prosesseringskraft. OpenCV -biblioteket spiller en stor rolle innen datamaskinens synsfelt, da det hjelper sterkt å redusere kostnads- og forberedelsestid for datamaskinvisjonsforskningsmiljø som er nødvendig av universitetsstudenter, hobbyister og fagpersoner. OpenCV gir også en enkel å bruke funksjoner for å få arbeidet gjort på en enkel, effektiv og elegant måte. OpenCV ble startet av Intel, og senere ble det forvandlet til et open source -prosjekt nå tilgjengelig på Sourceforge.nett. OpenCV-biblioteket har tilgjengelighet med flere plattformer, og det er delvis skrevet på C ++ og C-språk. Til tross for at dette biblioteket er tilgjengelig på mange Linux -distribusjoner fra de relevante pakkelagrene, vil vi i denne artikkelen prøve å installere og bruke OpenCV -biblioteket samlet fra en kildekode lastet ned fra SourceForge.netto nettsted.

Årsakene til å sammenstille en kildekode kan omfatte:

Denne artikkelen vil starte med installasjon av OpenCV på Debian 5.0 (Lenny). Senere vil en leser bli guidet gjennom en rekke eksempler på hvordan du bruker OpenCV for å vise et bilde, spille en video og bruke kamera for å fange videoinngangsstrømmen.

Installasjon

Følgende avsnitt vil beskrive en installasjonsprosess med OpenCV -biblioteket ved å bygge et binærfiler fra en kildekode tilgjengelig fra Sourceforge.nett. Installasjonsprosedyren demonstrert her ble testet på Debian 5.0 (Lenny) og Ubuntu 9.10 (Karmisk koala). Den faktiske installasjonsprosedyren skal være lik eller nøyaktig den samme for de fleste Linux -distribusjoner bortsett fra det første trinnet der pakkeavhengigheter er installert fra relevante Debian og Ubuntu Distribution -lagringsplasser. På RPM Linux -system vil du konsultere ditt Red Hat Package Management (RPM) verktøy for alternativer til OpenCV -forutsetninger beskrevet i neste avsnitt.

Forutsetninger

For det første, det som må gjøres er installasjon av nødvendige forutsetninger som kreves av OpenCV -biblioteket. Listen over avhengigheter kan endres litt etter dine behov:

Følgende Linux -kommando vil automatisk hente og installere alle nødvendige pakker og dens avhengigheter:

# apt-get install libavformat-dev libgtk2.0-dev PKG-Config CMake Libswscale-dev BZIP2

Innhenting av OpenCV -kildekode

Gjeldende versjon av OpenCV -biblioteket i skrivende stund er en versjon 2.0.0. Du kan laste ned en OpenCV-kildekode ved å peke nettleseren din til OpenCV Sourceforge.netto eller bruk WGET -kommandoen til å skaffe en kildekode direkte på kommandolinjen:

$ wget http: // nedlastinger.SourceForge.nett/prosjekt/opencvlibrary/opencv-unix/2.0/OpenCV-2.0.0.tjære.BZ2

Pakk ut OpenCV kildekode

Enten du brukte nettleser eller WGET-verktøy for å laste ned kildekode på OpenCV-biblioteket, bør du ende opp med OpenCV-2.0.0.tjære.BZ2 Tarball i din nåværende arbeidskatalog. Neste trinn er å trekke ut kildefiler med TAR -kommandoen. Følgende Linux-kommando vil trekke ut alle filer i OpenCV-2.0.0 Katalog:

$ tar xvjf opencv-2.0.0.tjære.BZ2

Ny OpenCV-2.0.0 katalog (ca. 67MB) skal nå være tilgjengelig i din nåværende arbeidskatalog og vil inneholde alle nødvendige kildefiler for en samling.

Samling og installasjon av OpenCV -binærene

For å kompilere OpenCV kildekode, skal vi bruke en open source make system cmake. Følgende CMake -konfigurasjonssamlingsflagg kommer til å bli satt:

MERK: CMake -verktøyet som standard gir ikke en måte å avinstallere prosjektet ditt fra et system. Hvis du har behov for å avinstallere OpenCCV fra ditt system, bør du gjøre passende endringer før du fortsetter med samlingen.

Naviger til OpenCV-2.0.0 Katalog som inneholder en kildekode:

$ CD OpenCV-2.0.0/

Lag og naviger til en ny katalog som skal brukes av CMake. Jeg denne saken, katalognavnet er det samme som prosjekttype, "Release":

$ mkdir utgivelse; CD -utgivelse

Bruk CMake til å opprette en konfigurasjonsfiler med konfigurasjonsflagg beskrevet ovenfor:

MERK: Cmake_install_prefix flagg kan settes til enhver ønsket installasjonssti

cmake -d cmake_build_type = release -d cmake_install_prefix =/usr/local -d build_python_support = on .. 

Etter utførelse av CMake -kommandoen vil installasjonssammendraget av vist og vil se ut som den nedenfor.

PRODUKSJON:
- Generell konfigurasjon for OpenCV 2.0.0 ======================================
-
- Kompilator:
- C ++ Flags (Release): -Wall -Pthread -Fffunksjonsseksjon -O3 -Dndebug -Fomit -Frame -Pointer -O3 -FFAST -MATH -MMMX -DNDEBUG
- C ++ Flags (Debug): -Wall -Pthread -Fffunksjonsseksjon -G -O0 -DDEBUG -D_DEBUG
- Linkerflagg (utgivelse):
- Linker Flags (Debug):
-
- GUI:
- GTK+ 2.x: 1
- Gthread: 1
-
- Bilde I/O:
- JPEG: True
- PNG: True
- Tiff: falsk
- Jasper: falsk
-
- Video I/O:
- DC1394 1.x: 0
- DC1394 2.x: 0
- FFMPEG: 1
- Codec: 1
- Format: 1
- Util: 1
- Swscale: 1
- Gentoo-stil: 1
- Gstreamer: 0
- UniCap:
- V4L/V4L2: 1/1
- Xine: 0
-
- Grensesnitt:
- Gammel python: 0
- Python: På
- Bruk IPP: Nei
- Bygg dokumentasjon 0
-
- Installer banen: /usr /lokal
-
- cvconfig.H er i:/hjemme/sandkasse/opencv-2.0.0/Utgivelse
- -
-
- Konfigurere gjort
- Generere gjort
- Byggfiler er skrevet til:/Home/Sandbox/OpenCV-2.0.0/Utgivelse

Når utførelsen av CMake -kommandoen ikke ga noen feil, er vi klare til å samle en kildekode.:

MERK: Det vil være en rekke advarselsmeldinger som vises på terminalen din under en byggeprosess. Disse advarselsmeldingene kan ignoreres, med mindre de påvirker dine foretrukne OpenCV -miljøinnstillinger!

$ make

Hvis det ikke ble vist feil på terminalen og dialogboksen Progress oppnådd [100%] under byggeprosessen, er vi klare til å installere OpenCV -biblioteker. Installasjonen er valgfri så lenge miljøvariabelen LD_LIBRARY_PATH er koblet til en passende OpenCV -bygget katalog. Hvis du ønsker å installere OpenCV i /usr /local som satt av CMake -flagg ovenfor, utfør en følgende Linux -kommando:

# Lag installasjon

Eksporter riktig vei til LD_LIBRARY_PATH Miljøvariabel og bruk LDConfig for å dynamisk koble til et OpenCV -bibliotek:

$ eksport ld_library_path =/usr/local/lib/: $ ld_library_path
# ldconfig

Hvis du ikke ønsker å installere OpenCV -biblioteket, bør du bare eksportere en riktig vei til OpenCV -biblioteket Build Directory for å fortelle systemet ditt hvor biblioteket ligger. Anta at den nye utgivelseskatalogen din er lokalisert på ~/OpenCV-2.0.0/Utgivelse Så vil eksportbanen din se slik ut:

$ eksport ld_library_path = ~/opencv-2.0.0/Release/: $ ld_library_path
# ldconfig

Dette fullfører en installasjonsprosedyre for OpenCV -biblioteket. For ytterligere informasjon med hensyn til OpenCV -installasjonsbesøk OpenCV -installasjonsveiledningen.

OpenCV -eksempler

Uten å forlenge en diskusjon om hva datamaskinvisjon er og hvordan det er relatert til OpenCV, vil vi nå flytte rett til noen eksempler på hvordan du skriver, kompilerer og utfører enkle programmer ved hjelp av OpenCV -biblioteket. Hvis du er interessert i en mer intens introduksjon til datasyn og OpenCV, anbefaler jeg en bok: “Learning OpenCV: Computer Vision with the OpenCV Library av Gary Bradski og Adrian Kaehler”.

En bildekonvertering

La oss starte med noe veldig enkelt, og det er 7 linjer med kode for å konvertere bilde mellom følgende bildetyper:

Følgende program godtar to kommandolinjeargumenter, kildebilde og destinasjonsbilde. Kildebilde vil bli lagret som en bildetype spesifisert av destinasjonsbildefilutfordring. Lagre følgende kode i en fil som kalles bildekonvertering.c:

#include "HighGui.h "
int main (int argc, char ** argv)
IPlImage* img = cvloadImage (argv [1]);
CVSaveImage (Argv [2], IMG);
cVReleaseImage (& img);
retur0;

Kildekode for vårt nye program er klart, og her kommer kompilasjonsdelen. Forutsatt at du har lagret ditt første OpenCV-program som Image-Conversion.C Du kan samle programmet ditt med følgende Linux -kommando:

$ G ++ 'PKG-CONFIG OpenCV--CFLAGS-Libs' Image-Conversion.C -o Image -konversjon

Etter vellykket samling opprettes en ny kjørbar binærfil som heter Image-Conversion. Før vi tester dette nye programmet, trenger vi noe eksempelbilde:

$ wget -o image.png http: // www.LinuxConfig.org/maler/rhuk_milkyway/bilder/mw_joomla_logo.png

wget lastet ned og lagret et bildebilde.PNG til din nåværende katalog, og vi kan nå forsøke å konvertere dette bildet til hvilken som helst bildetype som er oppført ovenfor. Følgende Linux -kommando vil konvertere bildetype PNG til JPG. Forutsatt at programsamling ikke ga noen feil og den binære filen din lagres som bildekonvertering, kan du konvertere mellom to bildetyper med følgende Linux-kommando:

$ ./Image-konversjonsbilde.PNG -bilde.jpg

For å bekrefte at bildet ble konvertert, kan en filkommando brukes til å vise en filtype for en gitt fil som et argument:

$ filbilde.*

PRODUKSJON:
bilde.JPG: JPEG -bildedata, JFIF Standard 1.01
bilde.PNG: PNG-bilde, 270 x 105, 8-biters/farge RGBA, ikke-interessert

Når du ser på kompilasjonskommandoen nok en gang kan du observere at et PKG -Config -verktøy hadde blitt brukt til å hente en plassering av et OpenCV -bibliotek med bruk av alternativene for -cflags, samt for å få alle avhengigheter ved hjelp av alternativ. Derfor kan en alternativ kommando til den ovenfor uten PKG-Config-verktøyet konstrueres for å se ut som dette:

g ++ -i/usr/local/include/opencv -l/usr/local/lib \
-lcxcore -lcv -lhighgui -lcvaux -lml Image -Conversion.C -o Image -konversjon

I begge tilfeller vil imidlertid kompilasjonskommandoen opprette uønskede bibliotekavhengigheter:

$ LDD Image-Conversion | grep lokalt

PRODUKSJON:
libcxcore.så.2.0 =>/usr/local/lib/libcxcore.så.2.0 (0xb7ccc000)
libcv.så.2.0 =>/usr/local/lib/libcv.så.2.0 (0xb7a7a000)
Libhighgui.så.2.0 =>/usr/local/lib/libhighgui.så.2.0 (0xb7a3f000)
libcvaux.så.2.0 =>/usr/local/lib/libcvaux.så.2.0 (0xb793b000)
libml.så.2.0 =>/usr/local/lib/libml.så.2.0 (0xb78d8000)

Programmet vårt er avhengig av OpenCVs Highgui.H bibliotek og derfor inkludert -lcvaux -lml -lcxcore og -lcv avhengigheter til en kompilasjonskommando er ikke nødvendig. En forkortet versjon av Compilation Command vil se slik ut:

$ g ++ -i/usr/local/include/opencv -lhighgui image -konversjon.C -o Image -konversjon

Følgelig hadde et programbibliotekavhengighet blitt redusert:

$ LDD Image-Conversion | grep lokalt

PRODUKSJON:
Libhighgui.så.2.0 =>/usr/local/lib/libhighgui.så.2.0 (0xb7f61000)
libcxcore.så.2.0 =>/usr/local/lib/libcxcore.så.2.0 (0xb7a75000)
libcv.så.2.0 =>/usr/local/lib/libcv.så.2.0 (0xb7823000)

Fra nå av er det opp til deg hvordan du sammenstiller følgende eksempler i denne artikkelen. Husk at den første kompileringskommandoen inkludert PKG-Config vil kunne kompilere alle eksempler. Imidlertid kan det gi en binær med overdreven avhengigheter.

Vis et bilde

På dette tidspunktet har vi vært i stand til å konvertere en bildetype og bekrefte metabeskrivelsen etter filkommando. Det er på tide å vise et bilde på skjermen og bekrefte visuelt at det ble konvertert riktig. Følgende eksempelprogram vil vise et bilde på skjermen:

#include "HighGui.h "
int main (int argc, char ** argv)
// CVLoadImage bestemmer en bildetype og lager datastruktur med passende størrelse
IPlImage* img = cvloadImage (argv [1]);
// Opprett et vindu. Vindusnavnet bestemmes av et levert argument
CVAMEDWINDOW (ARGV [1], CV_WINDOW_AUTOSIZE);
// Vis et bilde inni og vindu. Vindusnavnet bestemmes av et levert argument
CVShowImage (Argv [1], IMG);
// vent på ubestemt tid på tastetrykk
Cvwaitkey (0);
// Slipp pekeren til et objekt
cVReleaseImage (& img);
// ødelegge et vindu
cvdestroyWindow (argv [1]);

MERK: Gå tilbake til en bildekonverteringsseksjon ovenfor, hvis du trenger hjelp til hvordan du kan kompilere dette OpenCV -programmet.

Utførelse av dette displaybildeprogrammet med et bilde.JPG produsert i foregående avsnitt vil vise dette bildet på skjermen:

$ Display-Image Bilde.jpg

PRODUKSJON:

Gaussisk glatt

Du kan også prøve å lage en enkel bildetransformasjon ved hjelp av den Gaussiske glatte metoden. Legg til en følgende linje i skjermbildet ditt før en CVShowImage-funksjonsanrop:
..

CVAMEDWINDOW (ARGV [1], CV_WINDOW_AUTOSIZE);
CVSMOOTH (IMG, IMG, CV_GAUSSIAN, 9, 9);

CVShowImage (Argv [1], IMG);
..
og legg til som en første linje i programmet ditt '#include “CV.H ”'Direktiv.

Dette vil innlemme en Gaussisk glatt metode sentrert på hver piksel med 9 x 9 område i utgangsbildet. Etter sammenstilling og utførelse vil en følgende utdata bli presentert:
PRODUKSJON:

Spill video

Denne delen inneholder en programkode som vil opprette en enkel videospiller ved hjelp av OpenCV -biblioteket. Eksempelvideo, tre.AVI kan bli funnet i OpenCV-2.0.0 Katalog der du har trukket ut kildefilene (OpenCV-2.0.0/prøver/c/tre.avi):

#include "CV.h "
#include "HighGui.h "
// Initialiser globale variabler
int g_slider_position = 0; // Trackbar Position
Cvcapture* g_capture = null; // struktur for å lage en videoinngang
// rutine som skal kalles når brukeren flytter en glidebryter
void onTrackBarslide (int pos)
cvsetcaptureProperty (
g_capture,
CV_CAP_PROP_POS_FRAMES,
Pos
);

int main (int argc, char ** argv)
// Lag et vindu med passende størrelse. Windows -navnet bestemmes ved filnavn
// levert som et argument
CVAMEDWINDOW (ARGV [1], CV_WINDOW_AUTOSIZE);
// åpne video
g_capture = cvCreateFileCapture (argv [1]);
// Sett leseposisjon i rammer og hente totalt antall rammer
int rammer = (int) cvGetCaptureProperty (
g_capture,
CV_CAP_PROP_FRAME_COUNT
);
// Ikke oppretter Treackbar hvis video ikke inkluderer en informasjon
// Om antall rammer
hvis (rammer!= 0)
CVCreatTrackBar (
"Posisjon",
Argv [1],
& g_slider_position,
rammer,
OnTrackBarslide
);

// Vis videoramme etter ramme
IPlimage* ramme;
mens (1)
ramme = cvQueryFrame (g_capture);
hvis( !ramme) brudd;
cvShowImage (Argv [1], ramme);
// Sett sporbar til en gjeldende rammeposisjon
cvsetTrackBarpos ("posisjon", argv [1], g_slider_position);
g_slider_position ++;
char c = cvwaitkey (33);
// slutte hvis ESC presses
if (c == 27) bryte;

// gratis minne
cvReleasecapture (& g_capture);
cvdestroyWindow (argv [1]);
return (0);

MERK: Gå tilbake til en bildekonverteringsseksjon ovenfor, hvis du trenger hjelp til hvordan du kan kompilere dette OpenCV -programmet.

Utfør det nye OpenCV -programmet ditt og som et argument leverer en videofil:

 $ ./videospiller ~/opencv-2.0.0/prøver/c/tre.avi

PRODUKSJON:

Inngang fra et videokamera

Målet med denne delen er å gi noen enkle tips om hvordan du konfigurerer et kamera på et Linux -system og hvordan du kan bekrefte at videokameraet ditt blir gjenkjent av systemet ditt riktig. Når kameraet ditt er klart, blir du presentert for et enkelt program som er i stand til å vise en video ved hjelp av et videokamera som en inndata.

For denne artikkelen har jeg brukt en Logitech, Inc. QuickCam Pro 9000 Camera. Installasjon av dette kameraet på Debian 5.0 eller Ubuntu 9.10 (Karmic Koala) System var enkel plug & play -prosedyre. Her er noen hint om hvordan du kan bekrefte at kameraet ditt hadde blitt gjenkjent av systemet ditt:

MERK:
Utgangen din vil være annerledes !

$ LSUSB

PRODUKSJON:
Buss 002 Enhet 003: ID 046D: 0990 Logitech, Inc. QuickCam Pro 9000
Buss 002 Enhet 001: ID 1D6B: 0002 Linux Foundation 2.0 rotnav
Buss 001 enhet 002: ID 045E: 00D1 Microsoft Corp. Optisk mus med vipphjul
Buss 001 Enhet 001: ID 1D6B: 0001 Linux Foundation 1.1 rotknutepunkt

LSUSB -kommandoen avslører en kameratype koblet til systemet ditt. Utgang fra LSUSB -kommandoen betyr ikke nødvendig at kameraet ditt nå er klart til bruk. La oss se om noen moduler er tilknyttet video:

$ lsmod | grep video

PRODUKSJON:
UVCVIDEO 45800 0
kompat_ioctl32 1312 1 UVCVIDEO
VideoDEV 27520 1 UVCVIDEO
V4L1_Compat 12260 2 Uvcvideo, VideoDev
USBCORE 118192 7 SND_USB_AUDIO, SND_USB_LIB, UVCVIDEO, USBHID, EHCI_HCD, OHCI_HCD

Dette ser veldig lovende ut. Kameraet mitt bruker UVCVIDEO -modulen. Hvis du ikke ser noen ouptut, eller du bare ser utgang ikke relatert til kameraetheten din, kan det hende du trenger å kompilere kjernen din eller installere en passende modul på nytt eller installere en passende modul.

Nå må vi finne en enhetsfil som tilsvarer kameraet ditt. For å gjøre det bruker vi XAWTV -verktøyet:

MERK: Hvis XAWTV -kommandoen ikke er avialt, må du installere XAWTV -pakken.

$ xawtv -hwscan

PRODUKSJON:
Dette er XAWTV-3.95.dfsg.1, kjører på Linux/i686 (2.6.26-2-686)
Leter etter tilgjengelige enheter
Port 65-96
Type: XVIDEO, Image Scaler
Navn: NV Video Blitter

/Dev/Video0: OK [-Device/Dev/Video0]
Type: V4L2
Navn: UVC -kamera (046D: 0990)
Flagg: Fangst

Enhetsfilen assosiert med kameraet mitt er /dev /video0 . Du kan også se en feil på terminalen din som sier: ÅPEN /Dev /VIDEO0: Tillatelse nektet. For å løse dette problemet må du gjøre deg selv til en del av en gruppe "video". Test nå kameraet ditt med en følgende Linux -kommando:

$ xawtv -c /dev /video0

Hvis du hadde noen problemer i noen av de foregående trinnene, her er noen lenker, som kan hjelpe deg med å feilsøke problemet ditt:

Å bruke et kamera med OpenCV -biblioteket er enkelt som å skrive et program for å spille av video. Kopier en tidligere opprettet kildekode for videospillerprogrammet ditt og endringslinjen:

CVCapture* Capture = CVCreateFileCapture (Argv [1]);
til:
CVCapture* Capture = CVCreateCamerAcapture (0);

Så hele koden vil se ut som den nedenfor:

#include "HighGui.h "
int main (int argc, char ** argv)
CVAMEDWINDOW ("EKSEMPEL2", CV_WINDOW_AUTOSIZE);
CVCapture* Capture = CVCreateCamerAcapture (0);
IPlimage* ramme;
mens (1)
ramme = cvQueryFrame (fangst);
hvis( !ramme) brudd;
cvShowImage ("Eksempel2", ramme);
char c = cvwaitkey (33);
if (c == 27) bryte;

cvReleasecapture (& fangst);
cvDestroyWindow ("Eksempel2");

Legg merke til at en funksjon cvCreateCamerAcapture () ikke tok noen spesifikk enhetsfil eller argument. I dette tilfellet vil OpenCV begynne å bruke det første tilgjengelige kameraet i systemet ditt. Kompilere og utføre dette programmet, og hvis alt opp til dette punktet gikk bra, bør du se deg selv på skjermen.

MERK: Gå tilbake til en bildekonverteringsseksjon ovenfor, hvis du trenger hjelp til hvordan du kan kompilere dette OpenCV -programmet.

Skriv AVI -fil fra et kamera

Det siste eksemplet vil forsøke å lese et innspill fra et kamera og skrive det til en fil. I mellomtiden vil programmet også vise et vindu med en kamerainngang videostrøm. Videoinngangen lagres i en fil som leveres som et argument på kommandolinjen. Kodeken som brukes er spesifisert av FourCC (fire tegnkode) MJPG som i dette tilfellet er bevegelses JPEG. Dette eksempelprogrammet er veldig grunnleggende, og det er mye rom for forbedring:

#inkludere 
#inkludere
main (int argc, char* argv [])
Cvcapture* fangst = null;
Capture = CVCreateCamerAcapture (0);
IPlImage *rammer = CVQueryFrame (Capture);
// Få en rammestørrelse som skal brukes av forfatterstrukturen
CVSIZE -størrelse = CVSIZE (
(int) CVGetCaptureProperty (Capture, CV_CAP_PROP_FRAME_WIDTH),
(int) CVGetCaptureProperty (Capture, CV_CAP_PROP_FRAME_HEIGHT)
);
// erklære forfatterstruktur
// Bruk FourCC (Four Character Code) MJPG, The Motion JPEG Codec
// Output -filen er spesifisert av First Argument
CVVIDEOWRITER *Forfatter = CVCreateVideowriter (
Argv [1],
CV_FOURCC ('M', 'J', 'P', 'G'),
30, // Sett FPS
størrelse
);
// Opprett et nytt vindu
CVAMEDWINDOW ("Innspilling ... trykk ESC for å stoppe !", Cv_window_autosize);
// Vis fangst i vinduet og registrer deg til en fil
// post til brukeren treffer ESC -tasten
mens (1)
rammer = cvQueryFrame (fangst);
hvis( !rammer) brudd;
CVShowImage ("Innspilling ... trykk ESC for å stoppe !", rammer);
cvwriteFrame (forfatter, rammer);
char c = cvwaitkey (33);
if (c == 27) bryte;

cvReleasevideowriter (& forfatter);
cvReleasecapture (& fangst);
cvdestroyWindow ("Innspilling ... trykk ESC for å stoppe !");
retur0;

Forutsatt at du lagret og samlet denne programmet som "lagringskamera-input", kan du strat spille inn en video til en video-fil.Avi med denne kommandoen:
MERK: Gå tilbake til en bildekonverteringsseksjon ovenfor, hvis du trenger hjelp til hvordan du kan kompilere dette OpenCV -programmet.

$ ./Lagre-kamera-Input Video-fil.avi

Konklusjon

Denne artikkelen skal gi deg en god start på OpenCV -biblioteket fra et installasjonsperspektiv. Eksempler som presenteres har ikke mye å gjøre med selve datamaskinvisjonen, men de gir snarere en god testområde for OpenCV -installasjonen din. Selv fra disse enkle OpenCV -eksemplene er det også klart at OpenCV er et høyt sivilisert bibliotek siden med bare par linjer med OpenCV -kode kan du oppnå gode resultater. Kommentaren din til denne artikkelen er høyt verdsatt, da den kan ha stor innvirkning på artikkelsekvaliteten. Det kommer mer om OpenCV, så følg med ved å underskrive LinuxConfig.org rss feed (øverst venstre hjørne).

Introduksjon til datamaskinvisjon med OpenCV -biblioteket på Linux
Sammendrag Formålet med dette dokumentet er å hjelpe en leser med å komme i gang med Computer Vision Library OpenCV på Linux -systemet. OpenCCV er en ...
Sikuli -installasjon på Ubuntu Lucid Lynx Linux
Sikuli -programvare hjelper en bruker med å automatisere mange av den rutinemessige GUI -oppgaven. It Core den bruker Java Runtime Environment 6 og Op...
Time din off-peak nedlasting med på Linux-kommandoen
Ikke alle har ubegrenset nedlasting av internett. Noen ganger gir internett gir topp- og utenfor topp timer og er knapt noen som kommer til å holde se...