图片发送:
mkdir image_sender
mkdir image_sender/src
cd image_sender/src/
ros2 pkg create image_sender_py --build-type ament_python --dependencies rclpy --node-name image_sender
vim image_sender_py/image_sender_py/image_sender.py
代码:
#encoding:utf-8
import rclpy
from rclpy.node import Node
import cv2
from cv_bridge import CvBridge, CvBridgeError
import numpy as np
import time
from sensor_msgs.msg import Image
import time
from sensor_msgs.msg import Image
class NodePublisher(Node):
def __init__(self, name):
super().__init__(name)
self.get_logger().info("Hi, I am %s!" %name)
def main(args=None):
image_path = "/tmp/bus.jpeg"
image = cv2.imread(image_path)
rclpy.init()
node = NodePublisher('Camera_image')
image_pub = node.create_publisher(Image, "image_data", 10)
bridge = CvBridge()
while True:
data = bridge.cv2_to_imgmsg(image, encoding="bgr8")
image_pub.publish(data)
time.sleep(0.04)
cd ..
colcon build
. install/setup.sh
ros2 run image_sender_py image_sender
显示:
[INFO] [1703339500.883404231] [Camera_image]: Hi, I am Camera_image!
-----------------------------------------------------------------------------------------------------------------------
接收图片:
图片接收:
mkdir image_receiver
mkdir image_receiver/src
cd image_receiver/src/
ros2 pkg create image_receiver_py --build-type ament_python --dependencies rclpy --node-name image_receiver
vim image_receiver_py/image_receiver_py/image_sender.py
#encoding:utf-8
import rclpy
from rclpy.node import Node
import cv2
from cv_bridge import CvBridge, CvBridgeError
from sensor_msgs.msg import Image
bridge = CvBridge()
class NodeSubscribe(Node):
def __init__(self, name):
super().__init__(name)
self.get_logger().info("hi, I am %s!" %name)
def callback(self, data):
global bridge
cv_img = bridge.imgmsg_to_cv2(data, "bgr8")
cv2.imshow("frame", cv_img)
cv2.waitKey(1)
def main(args=None):
rclpy.init()
node = NodeSubscribe('image_node')
node.create_subscription(Image, 'image_data', node.callback, 10)
rclpy.spin(node)
rclpy.shutdown()
cd ..
colcon build
. install/setup.sh
ros2 run image_receiver_py image_receiver
可以看到图片