split_image.py
Go to the documentation of this file.
1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
3 
4 import cv_bridge
5 import rospy
6 from sensor_msgs.msg import Image
7 from jsk_topic_tools import ConnectionBasedTransport
8 
9 
10 class SplitImage(ConnectionBasedTransport):
11 
12  def __init__(self):
13  super(SplitImage, self).__init__()
14  self.vertical_parts = rospy.get_param('~vertical_parts', 1)
15  self.horizontal_parts = rospy.get_param('~horizontal_parts', 1)
16  self.pubs = []
17  for v in range(self.vertical_parts):
18  pubs = []
19  for h in range(self.horizontal_parts):
20  pubs.append(
21  self.advertise(
22  '~output/vertical{0:02}/horizontal{1:02}'.format(v, h),
23  Image,
24  queue_size=10))
25  self.pubs.append(pubs)
26  self.bridge = cv_bridge.CvBridge()
27 
28  def subscribe(self):
29  self.sub = rospy.Subscriber('~input', Image, self._split_cb)
30 
31  def unsubscribe(self):
32  self.sub.unregister()
33 
34  def _split_cb(self, msg):
35  img = self.bridge.imgmsg_to_cv2(msg, desired_encoding='bgr8')
36  height, width, _ = img.shape
37  for v in range(self.vertical_parts):
38  for h in range(self.horizontal_parts):
39  v_pixels = float(height) / self.vertical_parts
40  h_pixels = float(width) / self.horizontal_parts
41  split_img = img[int(v*v_pixels):int((v+1)*v_pixels),
42  int(h*h_pixels):int((h+1)*h_pixels)]
43  pub_msg = self.bridge.cv2_to_imgmsg(split_img, encoding='bgr8')
44  pub_msg.header = msg.header
45  self.pubs[v][h].publish(pub_msg)
46 
47 
48 if __name__ == '__main__':
49  rospy.init_node('split_image')
50  rospy.logwarn("split_image.py would be deprecated. Please use NODELET version of split_image")
51  SplitImage()
52  rospy.spin()
ssd_train_dataset.float
float
Definition: ssd_train_dataset.py:180
node_scripts.split_image.SplitImage.__init__
def __init__(self)
Definition: split_image.py:12
ssd_train_dataset.int
int
Definition: ssd_train_dataset.py:175
node_scripts.split_image.SplitImage.sub
sub
Definition: split_image.py:29
node_scripts.split_image.SplitImage._split_cb
def _split_cb(self, msg)
Definition: split_image.py:34
node_scripts.split_image.SplitImage
Definition: split_image.py:10
node_scripts.split_image.SplitImage.horizontal_parts
horizontal_parts
Definition: split_image.py:15
node_scripts.split_image.SplitImage.vertical_parts
vertical_parts
Definition: split_image.py:14
node_scripts.split_image.SplitImage.bridge
bridge
Definition: split_image.py:26
node_scripts.split_image.SplitImage.unsubscribe
def unsubscribe(self)
Definition: split_image.py:31
node_scripts.split_image.SplitImage.pubs
pubs
Definition: split_image.py:16
node_scripts.split_image.SplitImage.subscribe
def subscribe(self)
Definition: split_image.py:28


jsk_perception
Author(s): Manabu Saito, Ryohei Ueda
autogenerated on Fri May 16 2025 03:11:17