Fehler bei Yolo-Test mit C#

  • C#

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Fehler bei Yolo-Test mit C#

    Hallo Leute, :)

    ich hatte grade versucht, folgendes Tutorial nachzuvollziehen:



    Hab auch nach mühsamer Arbeit und genauem Abgucken alles geschafft - fast! Bis zum letzten Klick - dann kam die Fehlermeldung:

    System.DllNotFoundException: "Microsoft Visual C++
    2017-2019 Redistributable (x64)"

    Der Fehler liegt also in der Codezeile:

    using (var yoloWrapper = new YoloWrapper(config))

    Hat vllt. jmd. eine Ahnung, wie ich das beheben könnte? Wär euch sehr dankbar!!! Liebe Grüße,
    Jean! :)

    - Programme in der Art sind ja klar, aber ich hatte 2 Packages von yolo importiert und da liegt wahrscheinlich der Hund begraben: Sobald ich den 2. Button "Detect" anklicke, kommt og. Meldung...

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Jean“ ()

    Jean schrieb:

    wie ich das beheben könnte
    Füge die YoloWrapper-DLL Deinem Projekt als Verweis hinzu.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Jean schrieb:

    und Verweis hinzugefügt
    Wie sieht das in Deinem Projekt aus?
    Wo liegt diese DLL?
    Gibt es weitere DLLs, die dann von der vohandenen DLL aus nicht gefunden werden?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hallo RodFromGermany, :)

    Ich hab jetzt mal den Code kopiert:

    DetectObjectApp: Code Form 1

    C#-Quellcode

    1. [code]using Alturos.Yolo;
    2. using System;
    3. using System.Collections.Generic;
    4. using System.ComponentModel;
    5. using System.Data;
    6. using System.Drawing;
    7. using System.Drawing.Imaging;
    8. using System.IO;
    9. using System.Linq;
    10. using System.Text;
    11. using System.Threading.Tasks;
    12. using System.Windows.Forms;
    13. namespace DetectObjectApp{ public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void btnOpen_Click(object sender, EventArgs e) { using (OpenFileDialog ofd = new OpenFileDialog() { Filter = "PNG|*.png|JPEG|*.jpeg" })
    14. if (ofd.ShowDialog() == DialogResult.OK) pic.Image = Image.FromFile(ofd.FileName); } private void btnDetect_Click(object sender, EventArgs e) { var configurationDetector = new ConfigurationDetector();
    15. // Alt + Eingabe dann using alturos.yolo
    16. var config = configurationDetector.Detect(); using (var yoloWrapper = new YoloWrapper(config)) { using (MemoryStream ms = new MemoryStream()) { pic.Image.Save(ms, ImageFormat.Png); var items = yoloWrapper.Detect(ms.ToArray ()); yoloItemBindingSource.DataSource = items; } //items[0].Type -> "Person, Car, ..." //items[0].Confidence -> 0.0 (low) -> 1.0 (high) //items[0].X -> bounding box //items[0].Y -> bounding box //items[0].Width -> bounding box //items[0].Height -> bounding box } } }} [/code]
    17. Die DLLs liegen im DownloadOrdner - hab halt alles brav so nachgemacht, wie's die Dame vorgeführt hat. Sollte ich sie vllt. doch dierkt in den Programmordner kopieren? Dass es vllt. daran liegt?
    18. LG,
    19. Jean.
    @Jean Die DLLs müssen vom Programm gesehen werden können.
    Entweder sie liegen in einem Pfad, der in der System-Variable PATH enthalten ist (Download gehört nicht dazu)
    oder sie liegen neben der Exe.
    Ich habe in meinen Projekten ein Verzeichnis DLLs bzw. DLLsx86 und DLLsx64, wo die reinkommen.
    Dann bekommen die DLLs die Property Kopieren wenn neuer und werden, sofern es sich um .NET-Assemblies handelt, dem Projekt als Verweis hinzugefügt.
    Feddich.
    Das mit den DLL-Verzeichnissen hat den Vorteil, dass man die obj- und bin-Ordner löschen kann, ohne dass was passiert.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Tja, hab noch alles Mögliche versucht - extra dll-Ordner angelegt, Verweise neu hinzugefügt - nichts! Dann dlls direkt in den Programmordner kopiert - auch nichts - nimmt die gar nicht erst an - alles sträubt sich...
    Hab jetzt gesehen, dass die auf Github dasselbe Problem haben - hab aber noch nicht gecheckt, wie ich das umsetzen kann, was die da schreiben:

    github.com/AlturosDestinations/Alturos.Yolo/issues/9

    ?(

    Jean schrieb:

    alles sträubt sich...
    Wie äußert sich das?
    Probier mal alle Varianten aus { AnyCPU, x86, x64 }
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Tja, müssen wir wohl doch als "ungelöst" abstempeln, da hier keiner eine Lösung weiß, od. es zumindest keinen interessiert, obwohl das eigentlich ein aktuelles Thema wäre - Objekterkennung... schade... aber wenigstens vielen Dank für dein Interesse! ||

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Jean“ ()

    Jean schrieb:

    System.DllNotFoundException: "Microsoft Visual C++ 2017-2019 Redistributable (x64)"
    Da fehlt eine verlinkte native DLL, wofür Du möglicherweise noch ne Extra Installation brauchst.
    Hol Dir mal den Dependency Walker, zieh Deine DLL drauf und sieh Dir an, was der dazu verlinkten und fehlenden DLLs zu sagen hat.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!