J'utilise OpenCV (2.4) et Python (2.7.3) avec une caméra USB de Thorlabs (DC1545M).
Je fais de l'analyse d'image sur un flux vidéo et j'aimerais pouvoir modifier certains des paramètres de la caméra à partir de mon flux vidéo. Ce qui est déroutant, c'est que je peux modifier certaines propriétés de la caméra, mais pas toutes, et je ne suis pas sûr de ce que je fais mal.
Voici le code, en utilisant les liaisons cv2 dans Python, et je peux confirmer qu'il fonctionne :
import cv2
#capture from camera at location 0
cap = cv2.VideoCapture(0)
#set the width and height, and UNSUCCESSFULLY set the exposure time
cap.set(3,1280)
cap.set(4,1024)
cap.set(15, 0.1)
while True:
ret, img = cap.read()
cv2.imshow("input", img)
#cv2.imshow("thresholded", imgray*thresh2)
key = cv2.waitKey(10)
if key == 27:
break
cv2.destroyAllWindows()
cv2.VideoCapture(0).release()
À titre de référence, le premier argument de la méthode cap.set() fait référence à l'énumération des propriétés de la caméra, énumérées ci-dessous :
0. CV_CAP_PROP_POS_MSEC Current position of the video file in milliseconds.
1. CV_CAP_PROP_POS_FRAMES 0-based index of the frame to be decoded/captured next.
2. CV_CAP_PROP_POS_AVI_RATIO Relative position of the video file
3. CV_CAP_PROP_FRAME_WIDTH Width of the frames in the video stream.
4. CV_CAP_PROP_FRAME_HEIGHT Height of the frames in the video stream.
5. CV_CAP_PROP_FPS Frame rate.
6. CV_CAP_PROP_FOURCC 4-character code of codec.
7. CV_CAP_PROP_FRAME_COUNT Number of frames in the video file.
8. CV_CAP_PROP_FORMAT Format of the Mat objects returned by retrieve() .
9. CV_CAP_PROP_MODE Backend-specific value indicating the current capture mode.
10. CV_CAP_PROP_BRIGHTNESS Brightness of the image (only for cameras).
11. CV_CAP_PROP_CONTRAST Contrast of the image (only for cameras).
12. CV_CAP_PROP_SATURATION Saturation of the image (only for cameras).
13. CV_CAP_PROP_HUE Hue of the image (only for cameras).
14. CV_CAP_PROP_GAIN Gain of the image (only for cameras).
15. CV_CAP_PROP_EXPOSURE Exposure (only for cameras).
16. CV_CAP_PROP_CONVERT_RGB Boolean flags indicating whether images should be converted to RGB.
17. CV_CAP_PROP_WHITE_BALANCE Currently unsupported
18. CV_CAP_PROP_RECTIFICATION Rectification flag for stereo cameras (note: only supported by DC1394 v 2.x backend currently)
(Veuillez noter, comme le commentateur Markus Weber l'a fait remarquer ci-dessous, que dans OpenCV 4 vous devez enlever le préfixe "CV" du nom de la propriété, ex. cv2.CV_CAP_PROP_FRAME_HEIGHT -> cv2.CAP_PROP_FRAME_HEIGHT
)
Mes questions sont les suivantes :
Est-il possible de régler le temps d'exposition de la caméra (ou les autres paramètres de la caméra) via python/opencv ?
Sinon, comment dois-je procéder pour définir ces paramètres ?
Note : Il existe un code C++ fourni par le fabricant de la caméra montrant comment faire cela, mais je ne suis pas un expert (et de loin) en C++ et j'apprécierais toute solution basée sur Python.
Merci d'avance !