Hallo zusammen,
Ich hab mit Hilfe der ShapeDetection aus der EmguCV ein Programm zur Formenerkennung erstellt. Das klappt alles soweit ganz gut. Jetzt hab ich dieses Programm in ein anderes integriert, das die gleichen EmguCV-Verweise bereits hinzugefügt hat und auch alle "using"-Direktive sind identisch.
Das hat alles wunderbar geklappt ohne Fehlermeldungen und nach einigen Testläufen kam folgende Fehlermeldung:
Emgu.CV.Util.CvException: "OpenCV: Unrecognized or unsupported array type"
Genau geht es dabei, wie im Bild im Anhang zu sehen ist, um den CircleF-Arraytyp.
Wieso kommt diese Fehlermeldung erst nach einigen Versuchen und davor funktioniert alles ohne Probleme?
Hoffentlich steh ich hier nur auf dem Schlauf und muss das nicht alles neu machen....
Vielen Dank schon mal im Voraus!
Mit freundlichen Grüßen
Hallo Stauch30,
ich denke nicht, dass es am CircleF Array liegt, da dieses im Wrapper manuell erzeugt wird. Die Fehlermeldung kommt vom Methodenaufruf selber.
Kannst du prüfen, ob dein Input-Image immer 8-bit, single channel ist.
Grüße
spooky
Vielen Dank für die schnelle Antwort!
Mit folgender Methode wird das image aufgerufen, das später verwendet wird. ich seh darin keinen Unterschied zu dem image-Aufruf des alten Programms, aber hier funktioniert es nicht mehr....
public UMat loadImage()
{
UMat uimage = new UMat();
if (fileNameTextBox.Text != String.Empty)
{
StringBuilder msgBuilder = new StringBuilder("Performance: ");
//Load the image from file and resize it for display
Image<Bgr, byte> img =
new Image<Bgr, byte>(fileNameTextBox.Text)
.Resize(500, 500, Emgu.CV.CvEnum.Inter.Linear, true);
CvInvoke.CvtColor(img, uimage, ColorConversion.Bgr2Gray);
//use image pyr to remove noise
UMat pyrDown = new UMat();
CvInvoke.PyrDown(uimage, pyrDown);
CvInvoke.PyrUp(pyrDown, uimage);
Image<Gray, Byte> gray = img.Convert<Gray, Byte>().PyrDown().PyrUp();
originalImageBox.Image = img;
return uimage;
}
return uimage;
}
Hi Stauch30,
ich seh darin keinen Unterschied zu dem image-Aufruf des alten Programms
Wir kennen ja dein altes Programm nicht, wir wissen nur, daß es so nicht funktioniert. Aber die Fehlermeldung ist ja relativ eindeutig. Da müßtest du mal in die OpenCV-Doku schauen, welcher Typ als Parameter erwartet wird.
Weeks of programming can save you hours of planning
Das Inputimage muss immer 8-bit, single channel sein.
Wie kann ich das überprüfen bzw. sicherstellen?
Indem du das PixelFormat des Bitmaps überprüfst (Format8bppIndexed), und gegebenenfalls konvertierst.
Weeks of programming can save you hours of planning
Vielen Dank für die hilfreichen Tipps.
Funktioniert wieder.
Das Problem lag bei der Initalisierung der UMat uimage außerhalb der if-Schleife.