From 7d82c1f33a4f0ca263c96c429b58d786c9e9e83f Mon Sep 17 00:00:00 2001 From: Sem van der Hoeven Date: Mon, 8 May 2023 17:08:34 +0200 Subject: [PATCH] use opencv for image taking and writing --- src/camera/camera/camera_controller.py | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/src/camera/camera/camera_controller.py b/src/camera/camera/camera_controller.py index e65852f4..70ead379 100644 --- a/src/camera/camera/camera_controller.py +++ b/src/camera/camera/camera_controller.py @@ -3,24 +3,27 @@ from rclpy.node import Node from drone_services.srv import TakePicture -from picamera2 import Picamera2 +from cv2 import * class CameraController(Node): def __init__(self): super().__init__('camera_controller') - self.picam2 = Picamera2() + self.cam = VideoCapture(0) + self.srv = self.create_service(TakePicture, 'drone/picture', self.take_picture_callback) def take_picture_callback(self, request, response): - if (request.input_name == "default"): - self.get_logger().info("Taking picture with default filename") - self.picam2.start_and_capture_file("/home/ubuntu/image.jpg") - response.filename = "/home/ubuntu/image.jpg" - else: - self.picam2.start_and_capture_file(request.input_name) - response.filename = request.input_name - return response + result, image = self.cam.read() + if (result): + if (request.input_name == "default"): + self.get_logger().info("Taking picture with default filename") + imwrite("/home/ubuntu/image.jpg", image) + response.filename = "/home/ubuntu/image.jpg" + else: + imwrite(request.input_name, image) + response.filename = request.input_name + return response def main(args=None): rclpy.init(args=args)