Files
digit-depth/scripts/ros/digit_image_pub.py
2022-12-29 23:08:25 +08:00

53 lines
1.4 KiB
Python

""" ROS image publisher for DIGIT sensor """
import argparse
# OpenCV
import cv2
from PIL import Image as Im
from sensor_msgs.msg import Image
from cv_bridge import CvBridge
# Ros libraries
import roslib
import rospy
# Ros Messages
from sensor_msgs.msg import CompressedImage
from sensor_msgs.msg import std_msgs
from digit_depth.digit.digit_sensor import DigitSensor
class ImageFeature:
def __init__(self):
# topic where we publish
self.image_pub = rospy.Publisher("/output/image_raw/compressed",
CompressedImage, queue_size=10)
self.br = CvBridge()
def rgb_pub(digit_sensor: DigitSensor):
# Initializes and cleanup ros node
ic = ImageFeature()
rospy.init_node('image_feature', anonymous=True)
digit_call = digit_sensor()
br = CvBridge()
while True:
frame = digit_call.get_frame()
msg = br.cv2_to_compressed_imgmsg(frame, "png")
ic.image_pub.publish(msg)
rospy.loginfo("published ...")
if cv2.waitKey(1) == 27:
break
if __name__ == "__main__":
argparser = argparse.ArgumentParser()
argparser.add_argument("--fps", type=int, default=30)
argparser.add_argument("--resolution", type=str, default="QVGA")
argparser.add_argument("--serial_num", type=str, default="D00001")
args, unknown = argparser.parse_known_args()
digit = DigitSensor(args.fps, args.resolution, args.serial_num)
rgb_pub(digit)