import rosbag
import cv2
import argparse
from sensor_msgs.msg import Image
from cv_bridge import CvBridge, CvBridgeError
import rospy
import keyboard
IMAGE, TIME = None, None

parser = argparse.ArgumentParser(description="listen to a topic")
parser.add_argument('--topicName', type=str, required=True, help='name of topic')
parser.add_argument('--savePath', type=str, required=True, help="image save path")
args = parser.parse_args()
TOPICNAME, SAVEPATH = args.topicName, args.savePath


def image_callback(image):
    bridge = CvBridge()
    cv_image = bridge.imgmsg_to_cv2(image, "bgr8")
    IMAGE = cv_image
    TIME = "%.6f" % image.header.stamp.to_sec()
    # return cv_image
    cv2.imshow("img", cv_image)
    k = cv2.waitKey(1) & 0xFF
    if k == ord('s'):
        cv2.imwrite(SAVEPATH + "/" + TIME + ".jpg", IMAGE)
    elif k == ord('q'):
        exit(0)

rospy.init_node("imageSaver")
rospy.Subscriber(TOPICNAME, Image, image_callback)
rospy.spin()

