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

PyQt Python Discussion :

PyQT5 - récupérer le flux de la webcam dans un widget


Sujet :

PyQt Python

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    423
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 423
    Points : 133
    Points
    133
    Par défaut PyQT5 - récupérer le flux de la webcam dans un widget
    Bonjour,

    Je voudrais créer une interface PyQt, avec entre autre une fenêtre pour récupérer le flux de la webcam.
    J'ai trouvé ce code qui fonctionne :
    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
    16
    17
     
            cap = cv2.VideoCapture(0)
            fourcc = cv2.VideoWriter_fourcc(*'XVID')
            out = cv2.VideoWriter('output.avi'.format(timestamp),fourcc, 25.0, (640, 480))
            while( cap.isOpened() ):
                ret, frame = cap.read()
                if ret == True:
                    frame = cv2.flip(frame,1)
                    out.write(frame)
                    cv2.imshow('frame' , frame)
                    if cv2.waitKey(1) & 0xFF == ord('q'):
                        break
                else:
                    break
            cap.release()
            out.release()
            cv2.destroyAllWindows()
    Mais quand je cherche à l'intégrer dans mon interface :
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    class Camera(QWidget):
        def __init__(self):
     
            timestamp = time.strftime("%Y%m%d%H%M%S")
     
            cap = cv2.VideoCapture(0)
            fourcc = cv2.VideoWriter_fourcc(*'XVID')
            out = cv2.VideoWriter('output_{}.avi'.format(timestamp),fourcc, 25.0, (640, 480))
            while( cap.isOpened() ):
                ret, frame = cap.read()
                if ret == True:
                    frame = cv2.flip(frame,1)
                    out.write(frame)
                    cv2.imshow('frame' , frame)
                    if cv2.waitKey(1) & 0xFF == ord('q'):
                        break
                else:
                    break
            cap.release()
            out.release()
            cv2.destroyAllWindows()
     
    class MainWindow(QMainWindow):
     
        # constructor
        def __init__(self):
            super().__init__()
     
            # setting geometry
            self.setGeometry(100, 100,
                             800, 600)
     
            # setting style sheet
            self.setStyleSheet("background : lightgrey;")
     
            toolbar = QToolBar("Camera Tool Bar")
            self.addToolBar(toolbar)
            click_action = QAction("Click photo", self)
            click_action.setStatusTip("This will capture picture")
            click_action.setToolTip("Capture picture")
            click_action.triggered.connect(self.click_photo)
            toolbar.addAction(click_action)
     
            self.main_widget = QWidget()
            self.setCentralWidget(self.main_widget)
     
            self.layout = QVBoxLayout(self.main_widget)
     
            self.layout.addWidget(Camera())
     
            self.layout.addItem(QSpacerItem(20, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding))
     
            self.status = QStatusBar()
            self.status.setStyleSheet("background : white;")
            self.setStatusBar(self.status)
     
            self.setWindowTitle("PyQt5 Cam")
            self.show()
    L'image de la webcam prend toute la place de la fenêtre.
    Ce que je voudrais c'est pouvoir 'isoler' l'image de la webcam dans un widget, pour que dans mon interface, je puisse mettre d'autres widgets autour (boutons, ...)

    Merci,
    Nico

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    423
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 423
    Points : 133
    Points
    133
    Par défaut
    J'ai trouvé ma solution ici (exemple avec le QLabel)

    Nico

  3. #3
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 464
    Points : 9 254
    Points
    9 254
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Sous PyQt5, dommage de passer par opencv, il existe "QCamera" qui fait ça très bien. Voir un exemple pris sur le web qui fonctionne:

    https://python-catalin.blogspot.com/...m-example.html
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

Discussions similaires

  1. Récupérer en Java un élément graphique dans un widget
    Par Timoune007 dans le forum Android
    Réponses: 3
    Dernier message: 02/01/2016, 21h42
  2. [API HTML5] Récupérer le flux d'une webcam pour l'envoyer via websocket
    Par scandinave dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 03/08/2013, 09h53
  3. Accéder au flux de deux webcam dans deux form differentes
    Par chapitre37 dans le forum C++Builder
    Réponses: 5
    Dernier message: 15/03/2012, 15h32
  4. Récupérer un flux XML dans le navigateur
    Par g0g059 dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 27/07/2010, 10h20
  5. Récupérer le flux d'une webcam ?
    Par nodogeid dans le forum Windows Forms
    Réponses: 1
    Dernier message: 31/03/2010, 17h39

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