myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
   » Plugin für Firefox
   » Plugin für IE
   » Gadget für Windows
» Regeln
» Wie poste ich richtig?
» Datenschutzerklärung
» wbb-FAQ

Mitglieder
» Liste / Suche
» Stadt / Anleitung dazu
» Wer ist wo online?

Angebote
» ASP.NET Webspace
» Bücher
» Zeitschriften
   » dot.net magazin

Ressourcen
» guide to C#
» openbook: Visual C#
» openbook: OO
» MSDN Webcasts
» Search.Net

Team
» Kontakt
» Übersicht
» Wir über uns
» Impressum

» Unsere MiniCity
MiniCity
» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Rund um die Programmierung » OpenCV: Unrecognized or unsupported array type
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

OpenCV: Unrecognized or unsupported array type

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Stauch30
myCSharp.de-Mitglied

Dabei seit: 09.11.2017
Beiträge: 15


Stauch30 ist offline

OpenCV: Unrecognized or unsupported array type

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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

Stauch30 hat dieses Bild (verkleinerte Version) angehängt:
Fehlermeldung.jpg
Volle Bildgröße

05.03.2018 08:57 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Spook Spook ist männlich
myCSharp.de-Mitglied

Dabei seit: 28.10.2008
Beiträge: 180
Entwicklungsumgebung: VS2015 Professional
Herkunft: Esslingen a.N.


Spook ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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
05.03.2018 10:59 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Stauch30
myCSharp.de-Mitglied

Dabei seit: 09.11.2017
Beiträge: 15

Themenstarter Thema begonnen von Stauch30

Stauch30 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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....

C#-Code:
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;

        }
05.03.2018 17:23 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
MrSparkle MrSparkle ist männlich
myCSharp.de-Team

images/avatars/avatar-2159.gif


Dabei seit: 16.05.2006
Beiträge: 5.009
Herkunft: Leipzig


MrSparkle ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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.
05.03.2018 18:04 Beiträge des Benutzers | zu Buddylist hinzufügen
Stauch30
myCSharp.de-Mitglied

Dabei seit: 09.11.2017
Beiträge: 15

Themenstarter Thema begonnen von Stauch30

Stauch30 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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

Wie kann ich das überprüfen bzw. sicherstellen?
05.03.2018 18:27 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
MrSparkle MrSparkle ist männlich
myCSharp.de-Team

images/avatars/avatar-2159.gif


Dabei seit: 16.05.2006
Beiträge: 5.009
Herkunft: Leipzig


MrSparkle ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Indem du das  PixelFormat des Bitmaps überprüfst (Format8bppIndexed), und gegebenenfalls  konvertierst.
05.03.2018 20:15 Beiträge des Benutzers | zu Buddylist hinzufügen
Stauch30
myCSharp.de-Mitglied

Dabei seit: 09.11.2017
Beiträge: 15

Themenstarter Thema begonnen von Stauch30

Stauch30 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Vielen Dank für die hilfreichen Tipps.

Funktioniert wieder.

Das Problem lag bei der Initalisierung der UMat uimage außerhalb der if-Schleife.
06.03.2018 18:49 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 6 Monate.
Der letzte Beitrag ist älter als 6 Monate.
Antwort erstellen


© Copyright 2003-2018 myCSharp.de-Team. Alle Rechte vorbehalten. 24.09.2018 07:24