web-dev-qa-db-fra.com

Impossible de définir la largeur de cadre et la hauteur avec [OpenCV] cv2.videocapture.set ()

J'essaie de réduire la taille du cadre/de la fenêtre de ma capture vidéo à 320x180 Mais je n'arrive pas à le faire. J'utilise une Windows Kinect pour Xbox One et sa connexion à mon PC à l'aide d'un adaptateur.

J'ai essayé de définir le cv2.CAP_PROP_FRAME_WIDTH à 320 et cv2.CAP_PROP_FRAME_HEIGHT à 180 mais une fois que j'essaie d'obtenir les valeurs, il retourne 1920 et 1080. J'ai également essayé d'installer et de réinstaller le SDK et les pilotes de Kinect.

import cv2
import numpy as np

vid = cv2.VideoCapture(0)

vid.set(cv2.CAP_PROP_FRAME_WIDTH, 320)
vid.set(cv2.CAP_PROP_FRAME_HEIGHT, 180)
vid.set(cv2.CAP_PROP_FPS, 25)

print(vid.get(cv2.CAP_PROP_FPS))
print(vid.get(cv2.CAP_PROP_FRAME_WIDTH))

while True:
    ret, frame = vid.read()
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    # Display the resulting frame
    cv2.imshow('frame', gray)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

vid.release()
cv2.destroyAllWindows()

sortie d'impression

Je voudrais aider à savoir où le problème provient de et, espérons-le, obtiendrez une solution.

6
blinkThrice

Enfin j'ai trouvé cela résolu ce problème

Lorsque vous essayez de définir une résolution aléatoire, OpenCV définit la résolution la plus proche si cette résolution n'est pas disponible.

Vous pouvez exécuter ci-dessous la commande pour connaître toutes les résolutions disponibles de votre webcam.

uvcdynctrl -f

Et définir ces résolutions seulement. (Mes résolutions sur la webcam: 1280x720, 640x480, 640x360)

vid.set(cv2.CAP_PROP_FRAME_WIDTH, 640)
vid.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)

Référence: https://techverflow.net/2018/12/18/how-to-set-cv2-videocapture-image-size/

0
naam