use opencv for image taking and writing

This commit is contained in:
Sem van der Hoeven
2023-05-08 17:08:34 +02:00
parent d9707d6157
commit 7d82c1f33a

View File

@@ -3,24 +3,27 @@ from rclpy.node import Node
from drone_services.srv import TakePicture from drone_services.srv import TakePicture
from picamera2 import Picamera2 from cv2 import *
class CameraController(Node): class CameraController(Node):
def __init__(self): def __init__(self):
super().__init__('camera_controller') super().__init__('camera_controller')
self.picam2 = Picamera2() self.cam = VideoCapture(0)
self.srv = self.create_service(TakePicture, 'drone/picture', self.take_picture_callback) self.srv = self.create_service(TakePicture, 'drone/picture', self.take_picture_callback)
def take_picture_callback(self, request, response): def take_picture_callback(self, request, response):
if (request.input_name == "default"): result, image = self.cam.read()
self.get_logger().info("Taking picture with default filename") if (result):
self.picam2.start_and_capture_file("/home/ubuntu/image.jpg") if (request.input_name == "default"):
response.filename = "/home/ubuntu/image.jpg" self.get_logger().info("Taking picture with default filename")
else: imwrite("/home/ubuntu/image.jpg", image)
self.picam2.start_and_capture_file(request.input_name) response.filename = "/home/ubuntu/image.jpg"
response.filename = request.input_name else:
return response imwrite(request.input_name, image)
response.filename = request.input_name
return response
def main(args=None): def main(args=None):
rclpy.init(args=args) rclpy.init(args=args)