Python: rosbag convert to pictures, video convert to pictures, pictures convert to video

rosbagToPictures.py

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

import rospy
from sensor_msgs.msg import Image
from cv_bridge import CvBridge, CvBridgeError
import os
import cv2

savePath = 'highwayPictures'
if not os.path.exists(savePath):
    os.makedirs(savePath)

count = 0
bridge = CvBridge()

def callbackFunc(image):
    global count
    global bridge
    try:  #将ROS图像消息转换为OpenCV图像,输入是图像消息image,bgr8是OpenCV图像编码
        frame = bridge.imgmsg_to_cv2(image, "bgr8")
        count += 1
        print('frame {} receive success'.format(count))
        cv2.imwrite('./highwayPictures/{}.jpg'.format(count), frame)
        #can not use savePath to instead of './highwayPictures/'
        #cv2.imwrite('./highwayPictures/{}.jpg'.format(count), frame) **
    except CvBridgeError as e:
        print(e) 
    
def msg_subscriber():
    rospy.init_node('msg_subscriber', anonymous=True)
    rospy.Subscriber('/miivii_gmsl_ros/camera3', Image, callbackFunc)
    rospy.spin()

if __name__ == '__main__':
    msg_subscriber()

rosbagToVideo.py

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

import rospy
from sensor_msgs.msg import Image
from cv_bridge import CvBridge, CvBridgeError
import os
import cv2

video_output = 'video.mp4'
fourcc = cv2.VideoWriter_fourcc(*'XVID')
fps = 25
size = (1280, 720)
out = cv2.VideoWriter(video_output, fourcc, fps, size)

count = 0
bridge = CvBridge()

def callbackFunc(image):
    global count
    global bridge
    try:  #将ROS图像消息转换为OpenCV图像,输入是图像消息image,bgr8是OpenCV图像编码
        frame = bridge.imgmsg_to_cv2(image, "bgr8")
        count += 1
        print('frame {} receive success'.format(count))

        out.write(frame)
    except CvBridgeError as e:
        print(e) 
    
def msg_subscriber():
    rospy.init_node('msg_subscriber', anonymous=True)
    rospy.Subscriber('/miivii_gmsl_ros/camera1', Image, callbackFunc)
    rospy.spin()

if __name__ == '__main__':
    msg_subscriber()
    out.release()

videoToPictures.py

import os
import cv2
from moviepy.editor import VideoFileClip

if not os.path.exists('original_image'):
    os.makedirs('original_image')

video_input = 'project_video.mp4'
cap = cv2.VideoCapture(video_input)
count = 1
while(True):
    ret, image = cap.read()
    if ret:
        cv2.imwrite('original_image/' + str(count) + '.jpg', image)
        count += 1
    else:
        break
cap.release()

picturesToVideo.py

import cv2
import os

video_output = 'video.mp4'
fourcc = cv2.VideoWriter_fourcc(*'XVID')
fps = 25
size = (1280, 720)
out = cv2.VideoWriter(video_output, fourcc, fps, size)

imgPath = './highwayPictures/'
imgList = os.listdir(imgPath)
imgList.sort()

for imgName in imgList:
    image = cv2.imread(imgPath+imgName)
    out.write(image)

out.release()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值