@Jaynder Wenn man das mit dem C Code vergleicht mache ich doch genau das gleiche in Bezug auf die 2 Einwände die Du machst!
1. Schrottige Daten: wenn ich die pSeq mit Punkten fülle und dann zur Kontrolle mit cvGetSeqElem genau den richtigen Daten Typ mit den richtigen Werten Lesen kann, dann können die Daten doch nicht so schrottig sein.
2. falscher Übergabe Typ: das ist auch genau wie in dem C-Beispiel! Es wird eine Sequenz vom Typ pCvSeq erzeugt und an cvFitLine übergeben
genau wie hier:
Delphi-Quellcode:
var pLinkeEcke, ptmp1 : pIplImage;
sc : cvScalar;
...
...
ptmp1 := cvCreateImage(cvSize_(pLinkeEcke.Width, pLinkeEcke.Height), 8, 1);
cvAddS(pLinkeEcke, sc, pTmp1, nil);
// definition von cvAddS in C
void cvAddS( const CvArr* src, CvScalar value, CvArr* dst, const CvArr* mask=NULL );
in dem Beispiel übergebe ich ja auch ein pIplImage an eine routine die nur pCvArr nimmt und es funktioniert wunderbar.
Viel schlimmer finde ich es dass der Aufruf von cvCreateSeq
// CvSeq* cvCreateSeq( int seq_flags, int header_size,int elem_size, CvMemStorage* storage );
als seq_flag nur die 0 ohne Fehler nimmt! Und damit kann die Sequenz von cvFitLine nicht mehr richtig erkannt werden, was die angeblich schrottigen Daten erklären würde!
in der Doku steht dazu:
Zitat:
seq_flags
Flags of the created sequence. If the sequence is not passed to any function working with a specific type of sequences, the sequence value may be set to 0, otherwise the appropriate type must be selected from the list of predefined sequence types.
cvFitLine gehört scheinbar zu einer der "any" Funktionen die einen spezifischen Typ benötigen!
Ich bin ratlos! Trotzdem Danke!
Ich glaube es ist das beste mal das Entwicklerteam zu fragen ob die meine Fehler nachvollziehen können.
Gruß
Stefan