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

C++ Discussion :

« online » communication entre C++ et Python


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 19
    Par défaut « online » communication entre C++ et Python
    Bonjour à tous,

    J'ai un script en C++ qui me permet d'analyser de la vidéo en direct (en « temps réel » ou « online ») il permet de detecter des évenements dans le flux d'image de la vidéo, j'ai un switch case avec 4 cas. Pour chaque cas je souhaiterais envoyer « quelque chose » vers un script en Python qui tourne en parallèle pour compter chacun de ces événements et réaliser différentes actions.
    Mon problème est donc la communication « online » du C++ vers Python, (j'ai fait quelques essais mais à chaque fois le script Python reçoit les informations une fois que le script en C++ est arrété… Il faudrait les deux en parallèle…)
    Quelle méthode puis-je utiliser ?
    Est-il possible d'écrire dans une variable depuis le C++ et la lire depuis Python ?

    Merci beaucoup.
    Dd.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Salut,

    faut que tu embarques Python dans ton appli.
    C'est pas forcément super aisé https://docs.python.org/3/extending/embedding.html
    Y'a aussi Boost.Python en solution alternative, qui sera peut-être plus simple à utiliser.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 19
    Par défaut
    Merci de prendre le temps de me répondre !
    mon principal problème est que je n'ai pas développé la partie c++ et que l'ensemble est assez complexe... Je ne sais pas bien ou placer le python...
    j'aurai aimé pouvoir simplement réaliser un envoi depuis de c++.

    à moins que je puisse écrire juste quelque ligne en pythonau niveau de mon switch case en c++ pour envoyer vers un autre script python ??

    Merci

  4. #4
    Membre averti
    Homme Profil pro
    Chomage
    Inscrit en
    Juillet 2016
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chomage

    Informations forums :
    Inscription : Juillet 2016
    Messages : 24
    Par défaut
    Bonjour ^^
    On peut en C++ démarrer des fichiers comme depuis la ligne de commande avec la commande std::system (c'est une commande pas tres propre qu'on évite d'utiliser , mais la , je ne vois pas d'alternative) la syntaxe c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     std::system("C:\\\monchemindacces\\monscript.py")
    ATTENTION : les slash doivent etre précédés d'un autre slash pour etre compté (c'est pour ca qu'il
    y a des Double slash et meme un triple slash) les chemins doivent respecter la maniere d'ecriture de la console de l'OS utilisé (donc pour le projet final vérifier a coup de #ifdef l'OS avant la commande system est une bonne idée

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 19
    Par défaut
    Excusez moi mais je ne comprend pas bien le principe ...
    car pour moi je voudrais avoir deux scripts qui tournent en parallèle (un C++ et un Python) et que quand arrive certains évenements, le scripte en c++ envois une valeur ou une chaine de caractère (ou n'importe quoi d'autre), au script python pour qu'il detecte l'évenement.
    Merci !

  6. #6
    Membre très actif
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Mai 2014
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 227
    Par défaut
    J'avoue que je ne m'y connais pas du tout avec Python mais je comprend ce que tu veux faire. Donc j'ai une soluce ( pas très propre mais bon c'est en attendant ), dans ton switch tu va sauvegarder pour chaque case une donnée différente dans un fichier. Et quand celui ci est rempli, avec Python tu li et tu efface l'intérieur après avoir reçu la commande complète. Sinon en plus propre tu utilise l'IPC mais bon comme dit je ne connais rien sur python :p

    Edit : en cherchant sur google "IPC C++ Python" t'as pas mal de résultat, voici peut être une piste étant donné que le sujet est résolue : https://ubuntuforums.org/archive/ind.../t-524072.html

+ Répondre à la discussion
Cette discussion est résolue.

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