D
Habe jetzt etwas rumgespielt und noch ein paar Bemerkungen zu machen:
Ein komplett neu erstelltes Projekt habe ich nicht zum Laufen bekommen (weder ne Konsole, noch ne "normale" Anwendung), daher habe ich jetzt immer das Musterprojekt genommen und für meine Zwecke angepasst.
Ist nicht sooo toll, momentan ist es für meine Zwecke aber ausreichend.
Vielleicht hierzu bald mehr.
Jetzt mall ein paar codeauszüge:
Hier wird ein Foto eingelesen, dann in ein Graustufenbild umgewandelt.
Letzteres wird mitnem Gaussfilter geglättet und der Canny-Algor. liefert das Kantenbild dazu.
#include <vcl.h>
#include <jpeg.hpp>
#include <stdio.h>
#include "cv.h"
#include "highgui.h"
#include "UnitForm1.h"
//---------------------------------------------------------------------------
#pragma hdrstop
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
.
.
.
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if( OpenPictureDialog1->Execute() )
{
IplImage* Ori = cvLoadImage( OpenPictureDialog1->FileName.c_str(), 1) ;
//Erzeugt ein Graustufenbild aus Ori
IplImage* GreyScaled = cvCreateImage( cvSize(Ori->width, Ori->height),IPL_DEPTH_8U,1);
cvCvtColor( Ori, GreyScaled, CV_BGR2GRAY );
//Gaussfilterung des Graustufenbildes:
IplImage* GaussOfGrey = cvCreateImage( cvSize(GreyScaled->width, GreyScaled->height),IPL_DEPTH_8U,1);
cvSmooth(GreyScaled, GaussOfGrey, CV_GAUSSIAN,3,3);
//ANwenden des Canny-Algor. auf das Graubild:
IplImage* CannyOfGrey = cvCreateImage( cvSize(GreyScaled->width, GreyScaled->height),IPL_DEPTH_8U,1);
cvCanny(GreyScaled,CannyOfGrey,50.,100.,5);
//Anzeigen der einzelnen Bilder in separaten Fenstern:
cvNamedWindow("Grey", CV_WINDOW_AUTOSIZE);
cvShowImage("Grey", GreyScaled);
cvNamedWindow("Gauss", CV_WINDOW_AUTOSIZE);
cvShowImage("Gauss", GaussOfGrey);
cvNamedWindow("Canny", CV_WINDOW_AUTOSIZE);
cvShowImage("Canny", CannyOfGrey);
//Freugabe der IplImages funktioniert bei mir nur, wenn ich das zuletzt
//erstellte als erstes freigebe - warum ist mir momentan nicht klar
cvReleaseImage( &GaussOfGrey);
cvReleaseImage( &CannyOfGrey);
cvReleaseImage( &GreyScaled);
cvReleaseImage( &Ori);
cvWaitKey(0); //auf einen beliebigen Tastendruck warten
//schliessen der erzeugten windows:
cvDestroyWindow("Gauss");
cvDestroyWindow("Grey");
cvDestroyWindow("Canny");
}
}
Ich werd jetzt mal weiter openCV-lern
Der Horst