2010-06-25 13 views
2

J'ai recherché et ne trouve pas d'exemple sur la façon d'obtenir et de définir les paramètres de capture de l'appareil photo. Par exemple, la résolution de capture, fps, balance des couleurs, etc. J'ai seulement vu des exemples de comment changer les paramètres lors de l'enregistrement de la vidéo capturée mais je veux pouvoir trouver tous les modes de capture de l'appareil photo et choisir celui que je veux. Par exemple, j'utilise la webcam PS3eye et dans le programme de test il vous permet de changer les paramètres (320x240 à 15,30,60,120 fps, 640x480 à 15,30,60,75 fps). Y a-t-il une fonction dans OpenCV pour obtenir tous les modes de capture de l'appareil photo et en choisir un? Je me souviens que dans OpenFrameworks il y avait une fonction pour changer ces paramètres mais j'aimerais savoir comment le faire dans OpenCV.Obtention et configuration des paramètres de l'appareil photo

Voici le code pour OpenFrameworks avec OpenCV qui fait un peu ce que je veux:

vidGrabber.setDeviceID(4); 
vidGrabber.setDesiredFrameRate(30); //I want this 
vidGrabber.videoSettings(); 
vidGrabber.setVerbose(true); 
vidGrabber.initGrabber(320,240); //And this 

Répondre

1
cvSetCaptureProperty() 

avec ces drapeaux:

CV_CAP_PROP_FRAME_WIDTH - width of frames in the video stream (only for cameras) 
CV_CAP_PROP_FRAME_HEIGHT - height of frames in the video stream (only for cameras) 
CV_CAP_PROP_FPS   - frame rate (only for cameras) 
+0

Modification des travaux de résolution, mais je ne peux pas trouver toute preuve de changement de fps. C'est correct? CvCapture * capture; capture = cvCreateCameraCapture (5); cvSetCaptureProperty (capture, CV_CAP_PROP_FPS, 15); – jhaip

+0

Oui, ça devrait aller. Votre appareil photo prend-il en charge 15FPS? Si oui, comment vous assurez-vous que le FPS n'est pas changé? Il existe également une fonction cvGetCaptureProperty() que vous pouvez utiliser pour voir si FPS est modifié. – Adi

+0

Je voyais s'il y avait un changement en mesurant le temps de calcul nécessaire pour interroger le cadre, mais il n'a pas changé. Ai-je raison de dire qu'en augmentant le fps, le délai de cvQueryFrame() devrait diminuer? De plus, il n'y a aucune différence visuelle lorsque je la règle à des vitesses différentes, et je suis sûr que la caméra peut fonctionner à ces vitesses parce que l'application de test qui l'accompagne possède ces paramètres. J'ai également essayé cvGetCapturePropety() dans différents endroits et j'ai toujours 0, même juste après que je l'ai mis à 30. Est-ce correct d'imprimer le fps? Printf ("% d \ n", (int) cvGetCaptureProperty (capture, CV_CAP_PROP_FPS)) – jhaip