IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez Delphi Discussion :

OPENCV & DELPHI


Sujet :

Contribuez Delphi

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 53
    Points : 40
    Points
    40
    Par défaut OPENCV & DELPHI
    J'ai mis ce code pour implémenter OpenCV avec Delphi

    Version OpenCV: 2.3

    Version Delphi 7 (je n'ai pas encore testé avec Delphi 8, ....XE2)
    Si quelqu'un teste avec d'autres versions de Delphi, je suis preneur.

    Contenu du fichier
    - Les fichiers binaire ".dll" OpenCV 2.3

    - Les fichiers entêtes ".pas" contenant les fonctions et procédures
    * OpenCV_Core.pas
    * OpenCV_ImgProc.pas
    * OpenCV_Legacy.pas
    * OpenCV_HighGui.pas
    * OpenCV_Types.pas
    * OpenCV_Utils.pas
    * OpenCV_MachineLearning.pas
    * OpenCV_GPU.pas
    * OpenCV_Features.pas
    * OpenCV_ObjDetect.pas
    * OpenCV_Video.pas
    * OpenCV_Calibration.pas

    - Les Exemples démontrant l'utilisation en Delphi.
    J'ai mis des exemples juste pour démontrer que ça marche parfaitement.
    Cet exemple n'est pas parfait mais il fonctionne.
    * ANPR
    * BackGround Substraction
    * Canny
    * Compare Histogram
    * Drawing Histogram
    * Find Object
    * Machine Learning (KNearest)
    * Match Template
    * Motion Detection
    * OCR
    * Segmentation (Sobel, Laplace, ....)
    * Snake
    * Threshold
    * Track Corner
    * Tracking Face, Mouth, Eye

    Un autre problème que j'ai rencontré c'est d'utiliser les class C++ en Delphi, donc j'ai trouver une solution de créer une fichier OpenCV_Class.dll pour faire l'interface sur les class C++.

    Un autre problème aussi d'utiliser les fonction GPU en Delphi. Je ne sais pas comment on convertit les templates <> en Delphi.

    Fichier d'entête: https://docs.google.com/file/d/0BwaH...it?usp=sharing

    Fichier Binaire Dll: https://docs.google.com/file/d/0BwaH...it?usp=sharing

    Example Demo:
    - Track Face, Mouth, Eye: https://docs.google.com/file/d/0BwaH...it?usp=sharing
    - Track corner: https://docs.google.com/file/d/0BwaH...it?usp=sharing
    - Threshold: https://docs.google.com/file/d/0BwaH...it?usp=sharing
    - Snake: https://docs.google.com/file/d/0BwaH...> usp=sharing
    - Segmentation(Sobel, Laplace, ...): https://docs.google.com/file/d/0BwaH...it?usp=sharing
    - OCR: https://docs.google.com/file/d/0BwaH...it?usp=sharing
    - Motion Detect: https://docs.google.com/file/d/0BwaH...it?usp=sharing
    - Match Template: https://docs.google.com/file/d/0BwaH...it?usp=sharing
    - Machine Learning (KNearest): https://docs.google.com/file/d/0BwaH...it?usp=sharing
    - Find Object: https://docs.google.com/file/d/0BwaH...it?usp=sharing
    - Drawing Histogram: https://docs.google.com/file/d/0BwaH...it?usp=sharing
    - Canny: https://docs.google.com/file/d/0BwaH...it?usp=sharing
    - Background substractor: https://docs.google.com/file/d/0BwaH...it?usp=sharing
    - ANPR: https://docs.google.com/file/d/0BwaH...it?usp=sharing

    Document OpenCV (en C++): https://docs.google.com/file/d/0BwaH...it?usp=sharing

    Data pour HaarClassified: https://docs.google.com/file/d/0BwaH...it?usp=sharing

    Si vous trouvez d'autres améliorations, envoyez-les moi au rdr2510@gmail.com

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut

    Tu pourais nous traduire cela sous la forme d'un tutoriel avec les fichiers hébergés sur Developpez.com et non sur Google, tout le monde n'a pas forcément un compte gmail !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 53
    Points : 40
    Points
    40
    Par défaut OPENCV & DELPHI
    OK, mais il y a des fichier sont trop lourd, comment on fait pour faire ça sur developpez.com

  4. #4
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  5. #5
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Points : 381
    Points
    381
    Par défaut
    Bonjour,

    Je n'arrive pas à accéder aux fichiers pour tester cette superbe contribution !

    Cordialement,
    ZiP

  6. #6
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Citation Envoyé par [ZiP] Voir le message
    Je n'arrive pas à accéder aux fichiers pour tester cette superbe contribution !
    Moi non plus ! C'est dommage.

  7. #7
    Membre averti
    Homme Profil pro
    Ingénieur développement en retraite
    Inscrit en
    Juin 2002
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement en retraite
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2002
    Messages : 401
    Points : 300
    Points
    300
    Par défaut
    Il faut être invité, j'ai demandé...
    j'attends..

  8. #8
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Points : 381
    Points
    381
    Par défaut
    Bonjour Bernard,

    J'attends également!

    Cordialement,

    ZiP

  9. #9
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 53
    Points : 40
    Points
    40
    Par défaut OPENCV & DELPHI
    Ecoutez les gars, je suis en train de préparer pour les envoyer les fichiers, veillez patientez un peu.

    J'ai pas beaucoup de temps aussi puisque je travaille en même temps.

  10. #10
    Membre averti
    Homme Profil pro
    Ingénieur développement en retraite
    Inscrit en
    Juin 2002
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement en retraite
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2002
    Messages : 401
    Points : 300
    Points
    300
    Par défaut
    OK pas de soucis.
    Pour la bonne cause il est toujours possible de patienter
    Merci d'avance pour le boulot

  11. #11
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Points : 381
    Points
    381
    Par défaut
    Bonjour,

    Message bien reçu !

    Merci d'avance !

    ZiP

  12. #12
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 53
    Points : 40
    Points
    40
    Par défaut OPENCV & DELPHI
    Bonjour,

    Comme j'ai promis, j'ai mis sur un serveur FTP les fichiers.

    Librairie d'entête:
    http://rdr2510.site88.net/Files_Upload/Lib/Lib.rar
    Fichier Dll OpenCV 2.3:
    http://rdr2510.site88.net/Files_Upload/Bin/Bin.rar
    Exemples Demos:
    http://rdr2510.site88.net/Files_Upload/Demos/
    Fichiers Ressources Demos:
    http://rdr2510.site88.net/Files_Uplo.../Resources.rar

    Merci à Rayek de me proposer l'hébergement sur developpez.com mais c'est trop difficile leurs conditions. J'ai pas trop de temps pour élaborer un tutoriel pour ça. Je veux juste mettre en ligne ce que j'ai fait pour le partager. A vous de me retourner pour amélioration.

    En fait je connais pas trop C++, je sais développer en Delphi. Vu que dans mon boulot on a besoin de développer un logiciel de vidéo analytique pour une camera de surveillance alors on s'est tourné vers openCV pour trouver la solution. Mais OPENCV avec delphi ????

    J'ai essayé de trouver la combinaison compléte avec OpenCV + Delphi sur le net surtout avec Mr Google mais pas trop satisfaisante.
    Alors j'ai essayé de trouver une solution pour que je puisse utiliser OpenCV avec Delphi.

    Problèmes rencontrés
    J'ai affronté beaucoup de problème pour convertir du code C++ vers delphi. Par exemple pour convertir les Templates <> ou liste collection C++ en Delphi 7.
    Jusqu'à maintenant j'ai pas encore réuissi, surtout pour convertir le OpenCV_GPU, .... qui utilise pas mal cette méthode pour retourner des listes de valeurs.

    J'ai mis pas mal de journées, de mois, pour convertir les fichiers parce qu'il faut apprendre aussi C++, faire des recherches pour comprendre sa logique et trouver son équivalent en Delphi. Il faut faire beaucoup de tests aussi.

    Par exemple, pour moi c'est vraiment difficile d'utiliser les class exporter C++ en delphi 7. La solution que j'ai trouvée est de créer une dll C++ qui traduit les class en fonctions simples faciles à exporter. Vous pouvez voir par exemple dans OpenCV_ML.pas.
    Si quelqu'un a d'autre idées pour l'utilisation de class C++ en delphi 7 ?

    Si quelqu'un peut voir aussi si c'est un bug OpenCV ou bien juste j'ai mal converti la fonction cvGetSize : ça donne une erreur exception (je sais pas pourquoi ??)

    Pourquoi j'ai utilisé OpenCV 2.3,
    Au début j'ai utilisé OpenCV 2.1 et ça marchait bien avec delphi 7, comme il y a beaucoup de fonctions et procédures avancées dans la version OpenCV 2.2, alors j'ai migré vers OpenCV 2.2 or j'ai remarqué qu'il y a des bugs avec cette version (je ne me rappelle plus quels bugs), aussi j'ai migré vers OpenCV 2.3.
    J'ai resté avec cette version parce que la version 2.4 est vraiment changée, utilise beaucoup, beaucoup les templates <>, list, iterator.... que j'ai exposé ci-dessus.

    Les exemples Demonstrations
    Les exaeples que j'ai mis sont juste pour montrer que ça marche avec Delphi 7.
    Je vais mettre prochainement d'autres exemples, mais il faut que je récupère dans mon disque dur archive à la maison.
    Background substractor MOG 2, codeBook, SURF, utilisation XML pour stocker des données, petit example de ANPR, .....

    Les Fichiers entêtes
    Il y a encore des fonctions et procedures que je n'ai pas encore converties, faute de temps. J'irai poster prochainement aussi quand j'aurai fini par exemple dans le fichier OpenCV_Legacy et les fonctions inline.

    J'attends vos avis. Merci à tous

  13. #13
    Membre averti
    Homme Profil pro
    Ingénieur développement en retraite
    Inscrit en
    Juin 2002
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement en retraite
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2002
    Messages : 401
    Points : 300
    Points
    300
    Par défaut
    Super boulot
    Je plonge là dedans, mais je ne sais pas quand je vais pouvoir refaire surface

    Encore merci

  14. #14
    Membre averti
    Homme Profil pro
    Ingénieur développement en retraite
    Inscrit en
    Juin 2002
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement en retraite
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2002
    Messages : 401
    Points : 300
    Points
    300
    Par défaut
    J'ai fait quelques essais vite fait.
    J'ai pu lancer Project1.exe inclu dans la répertoire Bin.

    Par contre il m'a fallut récupérer en plus 3 dll :
    - mfc100ud.dll
    - msvcr100d.dll
    - msvcp100d.dll

    Prochaine étape compiler un exemple...

  15. #15
    Membre averti
    Homme Profil pro
    Ingénieur développement en retraite
    Inscrit en
    Juin 2002
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement en retraite
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2002
    Messages : 401
    Points : 300
    Points
    300
    Par défaut
    Essais de l'exemple "Drawing Histogram" qui m'intéresse particulièrement.

    Compilation et lancement avec DXE2 : OK.
    Par contre, cvLoadImage retourne toujours Nil quelque soit le type d'image
    chargée png ou jpg
    Pas d'erreur remontée.

  16. #16
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 53
    Points : 40
    Points
    40
    Par défaut OPENCV & DELPHI
    Citation Envoyé par Bernard B Voir le message
    Essais de l'exemple "Drawing Histogram" qui m'intéresse particulièrement.

    Compilation et lancement avec DXE2 : OK.
    Par contre, cvLoadImage retourne toujours Nil quelque soit le type d'image
    chargée png ou jpg
    Pas d'erreur remontée.


    Attention! avec Delphi XE2 pour utilisation pChar doit être en pAnsiChar, peut être à cause de ça.

  17. #17
    Membre averti
    Homme Profil pro
    Ingénieur développement en retraite
    Inscrit en
    Juin 2002
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement en retraite
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2002
    Messages : 401
    Points : 300
    Points
    300
    Par défaut
    PWideChar ou PAnsiChar ne change rien au problème...

  18. #18
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    Bonjour,

    Alors pour utiliser des objets C++ sous Delphi, c'est "possible" mais particulièrement compliqué. J'ai exploré tout cela à l'époque de Kylix et de l'interface QT qui est nativement objet. Il faut déclarer toutes les fonctions exportées par les DLL C++ qui sont généralement "manglées" pour construire une structure équivalente à l'objet C++.

    le fruit de mes travaux de l'époque est ici.

    L'approche plus traditionnelle est en effet d'utiliser un wrapper C qui remplace toute référence à une objet C++ par un THandle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function CreateObject: THandle;
    begin
      Result := THandle(TObjet.Create);
    end;
     
    procedure FreeObject(Handle: THande);
    begin
      TObject(Handle).Free;
    end;
    note que la DLL peut très bien utiliser des pointeurs object, c'est au niveau de l'interface Delphi qu'on indiquera THandle.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    // côté DLL
    function CreateObject: TObject;
    begin
      Result := TObjet.Create;
    end;
     
    procedure FreeObject(Object: TObject);
    begin
      Object.Free;
    end;
     
    // côté EXE
    function CreateObject: THandle; external 'lib.dll';
    procedure FreeObject(Handle: THandle); external 'lib.dll';
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  19. #19
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Août 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Comme j'ai promis, j'ai mis sur un serveur FTP les fichiers.

    Librairie d'entête:
    http://rdr2510.site88.net/Files_Upload/Lib/Lib.rar
    Fichier Dll OpenCV 2.3:
    http://rdr2510.site88.net/Files_Upload/Bin/Bin.rar
    Exemples Demos:
    http://rdr2510.site88.net/Files_Upload/Demos/
    Fichiers Ressources Demos:
    http://rdr2510.site88.net/Files_Uplo.../Resources.rar
    Salut
    il semble que ces liens ne sont pas actifs. sont-ils?

  20. #20
    Membre habitué
    Homme Profil pro
    Owner
    Inscrit en
    Décembre 2004
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Owner
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2004
    Messages : 466
    Points : 137
    Points
    137
    Par défaut
    Citation Envoyé par bbloopp Voir le message
    Salut
    il semble que ces liens ne sont pas actifs. sont-ils?
    Exact, les liens sont morts :-/
    Je suis surpris qu'il n'y ai pas plus d'intérêt à intégrer OpenCV pour Delphi
    Si quelqu'un a d'autres solutions ou liens ...
    d'avance

Discussions similaires

  1. Comment faire pour utiliser OpenCV avec Delphi XE2 ?
    Par [ZiP] dans le forum Débuter
    Réponses: 4
    Dernier message: 28/03/2013, 20h14
  2. Différences entre Delphi et Visual Basic ?
    Par Anonymous dans le forum Débats sur le développement - Le Best Of
    Réponses: 75
    Dernier message: 30/03/2009, 20h09
  3. Réponses: 4
    Dernier message: 27/03/2002, 11h03
  4. Réponses: 2
    Dernier message: 20/03/2002, 23h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo