1. 필요한 모듈을 load합니다.

    import rospy
    from sensor_msgs.msg import Image
    import numpy as np
    import cv2
    from cv_bridge import CvBridge
    
  2. plot 하기 위한 모듈들을 가져옵니다.

    import matplotlib.pyplot as plt
    from IPython.display import display, clear_output
    
  3. CvBridge, plot을 초기화 합니다.

    bridge = CvBridge() 
    fig, ax = plt.subplots()
    empty_image = np.zeros((200, 300, 3), dtype=np.uint8)
    img_obj = ax.imshow(empty_image)
    ax.set_title('USB CAM Image')
    
  4. 새로운 image가 들어왔을때 호출되는 callback함수를 만들어줍니다.

    def callback_image(topic):
        image = bridge.imgmsg_to_cv2(topic, 'rgb8')
        img_obj.set_data(image)
        clear_output(wait=True)
        display(fig)
    
  5. 노드를 초기화하고 Subscriber를 만들면 끝

    rospy.init_node('image_viewer')
    rospy.Subscriber('/usb_cam/image_raw', Image,callback_image, queue_size=10)
    

    Untitled