Hi
I'm using (several) OAK-D-PoE cameras with python (depthai==2.17.4.0).
I try to set iso / exposure manually but the image keeps coming back to auto exposure (below is my simplified code). Can you tell me what I'm doing wrong?
Thank you
import cv2
import depthai as dai
import time
import numpy as np
import argparse
ap = argparse.ArgumentParser()
ap.add_argument("-i", "--ip", help = "sensor IP address")
ap.add_argument("-o", "--output", help = "path to result image file")
args = vars(ap.parse_args())
ip = args["ip"]
output = args["output"]
pipeline = dai.Pipeline()
controlIn = pipeline.create(dai.node.XLinkIn)
controlIn.setStreamName('control')
xoutRight = pipeline.create(dai.node.XLinkOut)
xoutRight.setStreamName('right')
monoRight = pipeline.create(dai.node.MonoCamera)
monoRight.setBoardSocket(dai.CameraBoardSocket.RIGHT)
monoRight.setResolution(dai.MonoCameraProperties.SensorResolution.THE_720_P)
monoRight.out.link(xoutRight.input)
exposure = 1000 #(from 1 to 20000)
iso = 1600 #(from 100 to 1600)
# specify IP
device_info = dai.DeviceInfo(ip)
# Connect to device and start pipeline
with dai.Device(pipeline, device_info) as device:
qRight = device.getOutputQueue(name="right", maxSize=1, blocking=False)
controlQueue = device.getInputQueue(controlIn.getStreamName())
while True:
ctrl = dai.CameraControl()
ctrl.setManualExposure(exposure, iso)
controlQueue.send(ctrl)
inRight = qRight.tryGet()
key = cv2.waitKey(1)
if key == ord('q'):
break
if inRight is not None:
img = inRight.getFrame()
cvFrame = inRight.getCvFrame()
height, width = cvFrame.shape[:2]
cv2.imwrite(output, cvFrame)