在python中从opencv图像转换为jpeg图像

时间:2015-11-04 16:47:39

标签: python image opencv video-capture

我从视频文件抓取帧如下:

def capture_frame(file):
        capture = cv.CaptureFromFile("video.mp4")
        cv.GetCaptureProperty(capture, cv.CV_CAP_PROP_POS_MSEC)
        cv.SetCaptureProperty(capture, cv.CV_CAP_PROP_POS_MSEC, 90000)
        frame = cv.QueryFrame(capture)
        return frame

帧类型为cv2.cv.iplimage。如何在不保存的情况下将此类图像转换为jpeg图像?

谢谢,

2 个答案:

答案 0 :(得分:0)

您是否尝试过编写块?

with open('filename.jpeg', wb+') as destination:
            for chunk in image_file.chunks():
                destination.write(chunk)

这里也值得一看,使用opencv本地http://answers.opencv.org/question/115/opencv-python-save-jpg-specifying-quality-gives-systemerror/。虽然,不确定您为什么要尝试将.mp4保存到.jpeg ...

答案 1 :(得分:0)

以下内容应该为您提供图像的jpeg表示的字节。

def capture_frame(file):
        capture = cv.CaptureFromFile(file)
        cv.GetCaptureProperty(capture, cv.CV_CAP_PROP_POS_MSEC)
        cv.SetCaptureProperty(capture, cv.CV_CAP_PROP_POS_MSEC, 90000)
        frame = cv.QueryFrame(capture)
        return cv.EncodeImage('.jpg', frame).tostring()

capture_frame("video.mp4")

我已将EncodeImage的结果写入以二进制(open('somefile','wb'))打开的文件中,从而生成有效的JPEG。