无法在Python中使用OpenCV编写视频

2024-05-20 23:44:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将实时图像写入到由Kinect在Ubuntu中获取的视频文件中。请参见下面的示例代码:

#!/usr/bin/env python
import roslib
roslib.load_manifest('ros_package_name')
import rospy
import cv2
from sensor_msgs.msg import Image
from cv_bridge import CvBridge, CvBridgeError

class image_converter(object):
    def __init__(self, topic_name, file_name, fps=20):
        self.fps = fps
        self.file_name = file_name
        self.bridge = CvBridge()
        self.image_sub = rospy.Subscriber(topic_name, Image, self.callback)
        self.video_writer = None

    def callback(self,data):
        try:
            cv_image = self.bridge.imgmsg_to_cv2(data, 'bgr8')
        except CvBridgeError as e:
            print e

        if self.video_writer is None:
            rows, cols, _ = cv_image.shape
            self.video_writer = cv2.VideoWriter(self.file_name, -1, self.fps, (cols, rows))

        self.video_writer.write(cv_image)

    def clean_shutdown(self):
        if self.video_writer is not None:
            self.video_writer.release()
        print 'Saving video file', self.file_name

    def __del__(self):
        self.clean_shutdown()

def main():
    ic = image_converter('/kinect2/qhd/image_color_rect','video.avi')
    rospy.init_node('save_video', anonymous=True)
    rospy.on_shutdown(ic.clean_shutdown)
    rospy.spin()

代码运行平稳,终端没有显示任何错误。但是,它不会生成任何视频文件,即使我使用ctrl+c终止它。在


Tags: nameimageimportselfnonedefvideocv2
1条回答
网友
1楼 · 发布于 2024-05-20 23:44:59

使用编解码器保存视频。运动Jpeg几乎总是有效的!在

fourcc = cv2.VideoWriter_fourcc(*'MJPG')
self.video_writer = cv2.VideoWriter(file_name, fourcc, fps, frame_size)

接下来是故事的其余部分。在

相关问题 更多 >