Ermitteln von Bildzeiger in Visual C++
-
ich habe ein Prozedur in HDevelop erstellt,in der zb ein Bild eingelesen und bearbeitet wird.das "Prozedur" liefert ein neues Bild als Ausgabe zurück.
die Frage ist, ich will in das Programm c++ den pointer dieses Biles auszulesen.das Programm
... HTuple* NPointer; HTuple* NType; HTuple NWidth; HTuple NHeight; //Das Bild aus Halcon(Prozedur.dvp) auslesen HObject NImage = proc_call2.GetOutputIconicParamObject("NewImage"); //Bildgröße und seinem Pointer.. auslesen //diese Funktion liefert Fehler zurück GetImagePointer1(h_Image, NPointer, NType, &NWidth, &NHeight); ...
Ich weiß nicht mehr was ich noch machen soll!!
danke im Voraus
-
Hallo Hexa.AH2000
ich sehe in Deinem code keinen Fehler wahrscheinlich ist der Fehler eher in
HImage NImage = proc_call2.GetOutputIconicParamObject("NewImage");
wenn Du in Deutschland bis, dann bekommst Du gute Hilfe bei http://de.ids-imaging.com/
Herzliche Grüsse
Walter
-
diese Funktion GetImagePointer1() liefert Fehler zurück
-
Hexa.AH2000 schrieb:
diese Funktion GetImagePointer1() liefert Fehler zurück
Was sind denn die genauen Fehler ? Der Compiler wird ja konkrete Meldungen dazu machen, oder ?
Ist get_image_pointer1() == GetImagePointer1() ?
Nach einem Beispiel von halcon.de könnten fast alle Parameter falsch sein.
Hobject Image; char typ[128]; Hlong width,height; unsigned char *ptr; read_image(&Image,"fabrik"); get_image_pointer1(Image,(Hlong*)&ptr,typ,&width,&height);
Wo beim TE h_Image herkommt ist voellig unklar.
-
Die per Google gefundene Deklaration bestätigt meine Annahme:
Herror ::get_image_pointer1 (Hobject Image, long *Pointer, char* Type, long* Width, long *Height);
-
sorry für den Fehler "h_Image", es muss NImage statt h_Image sein.
man verwendet meinst GetImagePointer1()(in C++) statt get_image_pointer1()(in Halcon11 Entwicklungsumgebung Hdevelop).GetImagePointer1(NImage, NPointer, NType, &NWidth, &NHeight)
Der Compiler zeigt die folgende Meldung an:
http://www.m-i-u.de/images-i75412bftyq5.png
-
Die Halcon Doku sagt:
The operator GetImagePointer1 returns the value 2 (H_MSG_TRUE) if exactly one image was passed.
The behavior in case of empty input (no input images available) is set
via the operator SetSystem("no_object_result",<Result>).
If necessary an exception is raised.Ich schliesse daraus,
proc_call2.GetOutputIconicParamObject("NewImage");
liefert kein Bild.
-
Hexa.AH2000 schrieb:
sorry für den Fehler "h_Image", es muss NImage statt h_Image sein.
man verwendet meinst GetImagePointer1()(in C++) statt get_image_pointer1()(in Halcon11 Entwicklungsumgebung Hdevelop).GetImagePointer1(NImage, NPointer, NType, &NWidth, &NHeight)
Der Compiler zeigt die folgende Meldung an:
http://www.m-i-u.de/images-i75412bftyq5.pngWir wissen jetzt also das Du Halcon11 mit C++ verwendest. Gut.
Die Deklaration ist also z.B. diese
void GetImagePointer1(const HObject& Image, HTuple* Pointer, HTuple* Type, HTuple* Width, HTuple* Height);
siehe:
http://www.halcon.de/halcon/download/documentation/reference_de-11/get_image_pointer1.htmlAusser dem ersten Parameter sind alle anderen Rückgabewerte, die irgendwo
zurückgegeben werden müssen. Deine NPointer und NType zeigen aber nirgendwo hin!Dein Programm
Hexa.AH2000 schrieb:
... HTuple* NPointer; HTuple* NType; HTuple NWidth; HTuple NHeight; //Das Bild aus Halcon(Prozedur.dvp) auslesen HObject NImage = proc_call2.GetOutputIconicParamObject("NewImage"); //Bildgröße und seinem Pointer.. auslesen //diese Funktion liefert Fehler zurück GetImagePointer1(NImage, NPointer, NType, &NWidth, &NHeight); ...
Stürzt also nicht ohne Grund bei GetImagePointer1() ab ...
Die Referenz sagt auch, das es Alternativen gibt; z.B.:
HTuple HImage::GetImagePointer1(HTuple* Type, HTuple* Width, HTuple* Height) const;
Was dann so weitergehen könnte ...
HImage Image; HTuple Width, Height, Type, Pointer; ... Pointer = Image.GetImagePointer1(&Type, &Width, &Height);
Und da sieht man auch was in Deinem Code nicht stimmt ...
-
ich werde den Vorschlag von merano testen.
HImage Image; HTuple Width, Height, Type, Pointer; ... Pointer = Image.GetImagePointer1(&Type, &Width, &Height);
Danke Leute für eure Hilfe.