Problem bei OpenCV-Einbindung mit BorlandB_6.0_geloest
-
Hallo,
ich versuche seit einiger Zeit die OpenCV-Bibo (2.0) zu verwenden, kriege sie jedoch scheinbar nicht korrekt eingebunden.
Ich arbeite mit dem Borland-Builder 6.0 unter W-Vista und habe auch schon alles laut O'Reilly Learning OpenCVversucht, aber irgendwie funzt es nicht.So gibt es den Ordner ../_make/ nicht in meinem INstallationsverzeichnis
Ich habe folgendes getan:
1.) OpenCV Installiert
2.) die Include+Lib-Pfade des OpenCV-Inst-verzeichnisses bei den Projektoptionen eingetragen
3.)openCV/../bin als Systemvariable festgelegt - soll laut einer Hilfe wichtig sein
4.) da ich gelesen hatte, dass die BiBos fuer VS erzeugt wurden, müssten diese umgewandelt werden (mittels coff2omf) - hat nicht geklappt
4a.) Alternativ soll wohl die Aktivierung der -VM und -VF Optionen bei den Compilereinstellungen wirken - diese kann ich nicht finden. (Denke auch eher, dass dies Optionen fuer Kommandozeilen-Compiler sind)Dann habe ich mal testweise folgendes Programm erstellt:
//--------------------------------------------------------------------------- #ifdef _CH_ //diesen Abschnitt habe ich aus einer Hilfe #pragma package <opencv> //zur Einbindung der BiBo #pragma link "cv.lib" #pragma link "cxcore.lib" #pragma link "highgui.lib" #pragma link "ml.lib" #endif #include "highgui.h" #include "cv.h" #include "cxcore.h" #include <vcl.h> #pragma hdrstop #include <iostream.h> //--------------------------------------------------------------------------- #pragma argsused int main(int argc, char* argv[]) { cout << "Hello World"; int a; cin >> a; return 0; } //---------------------------------------------------------------------------
compilieren bringt folgende Fehlermeldung:
include Datei 'highgui.h' kann nicht geöffnet werden
Daraufhin habe ich den Ordner "../openCV20/include/opencv" bei den Include-Pfaden eingetragen und ein Meer an Compilerfehlern tritt auf:
[C++ Fehler] cxcore.hpp(1261): E2299 Template-Spezialisierung kann aus 'MatExpr_Op2_<A1,A2,M,Op>' nicht generiert werden [C++ Fehler] cxcore.hpp(1261): E2299 Template-Spezialisierung kann aus 'MatExpr_<E,M>' nicht generiert werden [C++ Fehler] cxcore.hpp(1261): E2040 Deklaration nicht ordnungsgemäß abgeschlossen ...
Das ist alles ziemlich durcheinander, aber ich weiß momentan nicht, was ich noch tun soll.
Vielleicht könnt ihr mir ja helfen.DerHorst
-
Hat niemand eine Idee - oder weiß wo ich was nachlesen kann?
Der Horst
-
Ich habe die OpenCV-Bibliothek zum Laufen bekommen.
Folgendes habe ich getan:
1.) Musterprojekt von Luiz Reginaldo (vielen Dank an ihn) unter folgendem Link herunter geladen:
http://opencv.willowgarage.com/wiki/C%2B%2BBuilder
2.) im BCB unter Projekt/Optionen/Packages in den Laufzeitpackages das "webdsnap" entfernt und das Musterprojekt läuft 1a
3.) den opencv-Unterordner des Musterprojektes bei allen Projekten bei den Include-Pfaden eintragen
(hier ist webdsnap meist nicht bei den packages dabei und muss somit nicht entfernt werden)Der Unterordner ../opencv/ enthält alle nötigen Dateien, um openCV zu verwenden (mit meinem jetzigen Wissensstand).
wenn ich was vorzeigbares an code habe werdet ihr es hier in Kürze finden.
Der Horst
Anmerkung am Ende:
Alle Versuche mit CMake, Lib-Konvertierungen &Co. haben nicht zum Erfolg geführt.
-
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