pyk4a
pyk4a copied to clipboard
how can i change camera settings?
import pyk4a from pyk4a import Config, PyK4A, Calibration, CalibrationType import cv2 from camera.helpers import convert_to_bgra_if_required import numpy as np class Azure_Camera: def init(self, config):
self.cam_config = config
#print(self.config)
if self.cam_config["camera_setting"]["color_resoultion"] == "1536":
self.color_resolution = pyk4a.ColorResolution.RES_1536P
self.color_resolution_ = (1536, 2048)
if self.cam_config["camera_setting"]["color_format"] == "BGRA32":
self.color_format = pyk4a.ImageFormat.COLOR_BGRA32
if self.cam_config["camera_setting"]["depth_mode"] == "OFF":
self.depth_mode = pyk4a.DepthMode.OFF
self.config = Config(\
color_resolution=self.color_resolution, color_format=self.color_format\
)
self.k4a = PyK4A(self.config)
self.calibration = Calibration(
self.k4a._device_handle, self.depth_mode, self.color_resolution
)
self.k4a.start()
self.get_color_intrinsic_mat()
self.get_color_distortion_mat()
self.get_color_rectifi_intrinsic_mat()
self.set_color_setting()
#self.k4a._start_cameras()
while True:
image = self.capture_rectif_color()
cv2.imshow("image", image)
key=cv2.waitKey(100)
if key == ord('q'):
cv2.destroyAllWindows()
break
def get_color_resolution(self):
return self.color_resolution_
def set_color_setting(self):
#self.k4a.exposure_mode_auto = (1, self.cam_config["color_setting"]["exposure"])
self.k4a.exposure = self.cam_config["color_setting"]["exposure"]
self.k4a.brightness = self.cam_config["color_setting"]["brightness"]
self.k4a.contrast = self.cam_config["color_setting"]["contrast"]
self.k4a.saturation = self.cam_config["color_setting"]["saturation"]
self.k4a.sharpness = self.cam_config["color_setting"]["sharpness"]
self.k4a.gain = self.cam_config["color_setting"]["gain"]
print("Color Camera Brightness : ", self.k4a.brightness)
print("Color Camera Contrast : ", self.k4a.contrast)
print("Color Camera Saturation : ", self.k4a.saturation)
print("Color Camera Sharpness : ", self.k4a.sharpness)
print("Color Camera Gain : ", self.k4a.gain)
print("Color Camera Exposure : ", self.k4a.exposure)
def get_color_intrinsic_mat(self):
self.camera_info = self.k4a.calibration.get_camera_matrix(CalibrationType.COLOR)
def get_color_distortion_mat(self):
self.distortion = self.k4a.calibration.get_distortion_coefficients(
CalibrationType.COLOR
)
self.distortion = np.squeeze(self.distortion)
def get_color_rectifi_intrinsic_mat(self):
self.new_camera_info, _ = cv2.getOptimalNewCameraMatrix(
self.camera_info,
self.distortion,
self.color_resolution_,
1,
self.color_resolution_,
)
def capture_color(self):
capture = None
while True:
capture = self.k4a.get_capture()
if np.any(capture.color):
return convert_to_bgra_if_required(
self.config.color_format, capture.color
)
return capture.color[:, :, :3]
def capture_rectif_color(self):
img = self.capture_color()
rectifi_img = cv2.undistort(
img, self.camera_info, self.distortion, None, self.new_camera_info\
)
return rectifi_img
The code above is what I wrote. When I run the camera through this code, the changed camera value is not applied. Is there anything I need to change or add?