Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
OpenCV: Unrecognized or unsupported array type
Stauch30
myCSharp.de - Member



Dabei seit:
Beiträge: 15

Themenstarter:

OpenCV: Unrecognized or unsupported array type

beantworten | zitieren | melden

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
Attachments
private Nachricht | Beiträge des Benutzers
Spook
myCSharp.de - Member



Dabei seit:
Beiträge: 241
Herkunft: Esslingen a.N.

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Stauch30
myCSharp.de - Member



Dabei seit:
Beiträge: 15

Themenstarter:

beantworten | zitieren | melden

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;

        }
private Nachricht | Beiträge des Benutzers
MrSparkle
myCSharp.de - Team

Avatar #avatar-2159.gif


Dabei seit:
Beiträge: 5.649
Herkunft: Leipzig

beantworten | zitieren | melden

Hi Stauch30,
Zitat von 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
private Nachricht | Beiträge des Benutzers
Stauch30
myCSharp.de - Member



Dabei seit:
Beiträge: 15

Themenstarter:

beantworten | zitieren | melden

Das Inputimage muss immer 8-bit, single channel sein.

Wie kann ich das überprüfen bzw. sicherstellen?
private Nachricht | Beiträge des Benutzers
MrSparkle
myCSharp.de - Team

Avatar #avatar-2159.gif


Dabei seit:
Beiträge: 5.649
Herkunft: Leipzig

beantworten | zitieren | melden

Indem du das PixelFormat des Bitmaps überprüfst (Format8bppIndexed), und gegebenenfalls konvertierst.
Weeks of programming can save you hours of planning
private Nachricht | Beiträge des Benutzers
Stauch30
myCSharp.de - Member



Dabei seit:
Beiträge: 15

Themenstarter:

beantworten | zitieren | melden

Vielen Dank für die hilfreichen Tipps.

Funktioniert wieder.

Das Problem lag bei der Initalisierung der UMat uimage außerhalb der if-Schleife.
private Nachricht | Beiträge des Benutzers