기술

[ROS] 실제 주행영상 bag파일로 저장후, 영상 재생하기

기술 공간 2021. 10. 13. 10:59

<주행 영상 bag파일로 저장하기>

1. 실제 주행용 코드 실행

ex. $ roslaunch {패키지 이름} hough.launch

 

2. rosbag record 명령어 실행

디렉토리로 이동 : ~/catkin_ws/src/bagfile

터미널 명령어 실행 : $rosbag record -O {bag 파일 이름} /usb_cam/image_raw          ->   저장될 토픽 이름 : /usb_cam/image_raw

 

이렇게 하면, 현재 디렉토리(~/catkin_ws/src/bagfile) 에 bag파일이 생성될 것임.

bag파일이 제대로 생성되었는지 확인하는 방법 : 터미널 명령어 실행 : $rosbag info {bag 파일 이름}

 

 

3. bag파일영상확인용   py파일   작성

디렉토리로 이동 : ~/catkin_ws/src/bagfile/src

터미널 명령어 실행 : $gedit edge_cam.py

메모장 열리면, 아래 내용 작성

---

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import cv2
import rospy
import numpy as np

from sensor_msgs.msg import Image
from cv_bridge import CvBridge


bridge = CvBridge()
cv_image = np.empty(shape=[0])
#cv_image = np.empty((640,480))

def img_callback(data):
  global cv_image
  cv_image = bridge.imgmsg_to_cv2(data, "bgr8")

rospy.init_node('cam_tune', anonymous=True)
rospy.Subscriber("/usb_cam/image_raw/", Image, img_callback)

while not rospy.is_shutdown():

  if cv_image.size != (640*480*3):
    continue
  gray = cv2.cvtColor(cv_image, cv2.COLOR_BGR2GRAY)
  blur_gray = cv2.GaussianBlur(gray,(5,5),0)
  edge_img = cv2.Canny(np.uint8(blur_gray),60,70)

  cv2.imshow("original", cv_image)
  cv2.imshow("gray", gray)
  cv2.imshow("gaussian blur", blur_gray)
  cv2.imshow("edge", edge_img)
  cv2.waitKey(1)

작성후,

터미널 명령어 실행 : $chmod u+x edge_cam.py

 

 

4. "위 3번에서 만든 py파일" 실행용 launch 파일 작성

디렉토리로 이동 : ~/catkin_ws/src/bagfile/launch

터미널 명령어 실행 : $gedit edge_cam.launch

메모장 열리면, 아래 내용 작성

---

<launch>
  <node name="usb_cam" pkg="usb_cam" type="usb_cam_node" output="screen" >
    <param name="video_device" value="/dev/video0" />
    <param name="image_width" value="640" />
    <param name="image_height" value="480" />
    <param name="pixel_format" value="yuyv" />
    <param name="camera_frame_id" value="usb_cam" />
    <param name="io_method" value="mmap"/>
  </node>

  <node name="edge_cam_node" pkg="bagfile"
   type="edge_cam.py" output="screen" />

</launch>

작성후,

터미널 명령어 실행 : $chmod u+x edge_cam.launch

 

5. 코드 실행

터미널 명령어 실행 : $roslaunch bagfile edge_cam.launch

디렉토리로 이동 : ~/catkin_ws/src/bagfile/src

터미널 명령어 실행 : $rosbag play {bag 파일 이름}

'기술' 카테고리의 다른 글

[ROS] line_drive.py  (0) 2021.10.14
[ROS] hough_drive.py  (0) 2021.10.14
ros 비디오 녹화 또는 rosbag 관련  (0) 2021.10.12
[참고할만한 블로그나 github]  (0) 2021.09.27
[논문구현 참고사이트]  (0) 2021.09.26