OpenCV

From ImageWiki

Revision as of 21:17, 13 June 2007 by Zt4Vnj (Talk | contribs)
Jump to: navigation, search

mtv ringtones cialis online lisinopril online nokia ringtones buy paxil cheap didrex buy ultracet sonyericsson ringtones mono ringtones valium online diazepam online cheap clomid cheap fioricet paxil online kyocera ringtones mp3 ringtones mp3 ringtones alprazolam online free alltel ringtones alprazolam online lipitor online buy hydrocodone verizon ringtones levitra tramadol online hydrocodone online sprint ringtones order xanax real ringtones tracfone ringtones buy propecia cheap ativan samsung ringtones tramadol online buy didrex clomid lorazepam online free samsung ringtones cheap albuterol cheap zyban soma online but clonazepam paxil online free real ringtones cheap sildenafil soma online ambien cheap wellbutrin adipex online buy propecia free real ringtones buy diethylpropion free polyphonic ringtones cheap rivotril jazz ringtones but lipitor cheap lorazepam prozac online order carisoprodol free polyphonic ringtones tenuate online cheap valium polyphonic ringtones lipitor online free free ringtones cheap phentermine free sagem ringtones free free ringtones ultracet online ortho online buy vigrx nexium meridia online sharp ringtones music ringtones diazepam online cheap carisoprodol but wellbutrin meridia online free free ringtones xanax online free mtv ringtones cheap fioricet mp3 ringtones nextel ringtones adipex online xanax online sagem ringtones diazepam online clonazepam online polyphonic ringtones cheap carisoprodol wellbutrin online kyocera ringtones ativan online cheap viagra buy lorazepam cheap ultram kyocera ringtones order alprazolam alltel ringtones cheap ambien cheap vicodin free motorola ringtones sony ericsson ringtones punk ringtones buy viagra but phentermine xanax online buy ultram valium online cingular ringtones buy adipex cheap cyclobenzaprine cheap propecia cheap tenuate carisoprodol online ultracet online pharmacy online online free wwe ringtones cheap diazepam xenical online nokia ringtones free qwest ringtones zanaflex online diazepam online free verizon ringtones free motorola ringtones order lortab buy prozac ericsson ringtones but ortho cheap cyclobenzaprine celexa online free free ringtones phentermine free cool ringtones cheap prozac free qwest ringtones order cialis free sprint ringtones nexium online real ringtones sagem ringtones free tracfone ringtones free nokia ringtones punk ringtones free mp3 ringtones sony ringtones buy ativan but hgh free midi ringtones alltel ringtones flexeril online sony ericsson ringtones motorola ringtones vicodin online tracfone ringtones soma online levitra online free motorola ringtones didrex online sildenafil online cheap pharmacy online zoloft online hydrocodone online free sony ringtones cingular ringtones viagra paxil online ambien online buy lortab hydrocodone online cheap vigrx cheap ativan buy hgh sildenafil online viagra online ortho online nextel ringtones lisinopril free funny ringtones sony ericsson ringtones vicodin online but hydrocodone order ativan free mono ringtones clonazepam levitra sprint ringtones cialis online free sony ringtones levitra online zanaflex online phentermine celexa online ultracet online wwe ringtones free sharp ringtones buy norco Denne side giver en bl?d introduktion til OpenCV, som er et kraftigt bibliotek til billedbehandling og Computer Vision udviklet i C. OpenCV's hjemmeside kan ses her. Projektet har desuden en god wiki.

Generelt er OpenCV yderst veldokumenteret, s� denne side giver kun et par simple eksempler p� anvendelse. Et problem ved OpenCV's dokumentation er dog at der er s� meget af den, hvilket kan g?re det hele noget uoverskueligt. Man skal derfor vide hvad man leder efter -- men bare rolig, det l?rer man med tiden.

Strukturen af OpenCV

OpenCV best?r af tre dele

  • cxcore stiller diverse basale strukturer til r?dighed. Dette inkluderer strukturer til billeder, matricer, punkter, o.lign. Desuden indeholder cxcore basale grafiske funktioner, s� som tegning af linier, cirkler, firkanter, osv.
  • cv indeholder funktioner til billedbehandling, Computer Vision og m?nstergenkendelse. Det vil sige funktioner til kantdetektion, kamerakalibrering, beregning af motion flow, klyngeanalyse og s� videre.
  • highgui indeholder funktioner til opbygning af simple grafiske brugergr?nseflader og til indl?sning af billeder. Dvs. at highgui prim?rt bruges til at hente billeder (fra kamera og filer) og derefter vise dem.

Hvordan benyttes OpenCV p� Linux?

En af OpenCV's styrker er at det er let at benytte. Hver af de tre dele af OpenCV stiller en header-fil til r?dighed der blot skal inkluderes i dit C/C program. Dvs. f?lgende tre header-filer er interessante: "cxcore.h", "cv.h" og "highgui.h".

For at overs?tte programmer der benytter OpenCV, benyttes programmet pkg-config. Dette program fort?ller blot hvilke argumenter der skal gives til overs?tteren for at OpenCV kan benyttes. Kommandoen

pkg-config --cflags opencv

udskriver de argumenter der skal gives til overs?tteren for at den kan finde OpenCV, mens kommandoen

pkg-config --libs opencv

udskriver de argumenter der skal gives til overs?tteren for at den kan linke til OpenCV. Dette g?r det yderst nemt at skrive en passende Makefile. Her gives et mindre eksempel, som du selv m� tilpasse til dit eget projekt.

# Compile and link flags
CXX      =  g  
CXXFLAGS = `pkg-config opencv --cflags` -Wall
LIBS     = `pkg-config opencv --libs`

# Name of executable
EXECUTABLE = myprogram

# Files
SOURCES = myprogram.cc myauxilaryfunction.cc
OBJECTS = $(patsubst %.cc, %.o, $(SOURCES))

# Linking
all: $(OBJECTS)
	$(CXX) $(LIBS) $(OBJECTS) -o $(EXECUTABLE)

# Compilation
%.o : %.cc
	$(CXX) $(CXXFLAGS) -c $^

Eksempel 1

Det f?rste eksempel vi ser p� tager billeder fra et kamera og viser dem i et vindue. Det er formentlig det mest simple og alligevel nyttige program der kan skrives i OpenCV. Programmet kan findes i Robot Eksperimentariums SVN under Examples/opencv/Eksempel1 og best?r af filen eksempel1.cc og en tilh?rende Makefile.

#include "highgui.h"

int main() 
{
    // Get an OpenCV camera handle
    CvCapture *cam = cvCaptureFromCAM(-1);

    // Initialise the GUI
    const char *window = "Eksempel 1";
    cvNamedWindow(window, CV_WINDOW_AUTOSIZE);

    // The main loop
    while (cvWaitKey(4) == -1) {
        IplImage *im = cvQueryFrame(cam);
        cvShowImage(window, im);
    }

    // Clean up
    cvDestroyAllWindows();
    cvReleaseCapture(
Personal tools