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

conversion from opencv image to jpeg image in python

我正在从视频文件中抓取帧,如下所示:

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图像?

谢谢,

你试过只写块吗?

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...

下面应该为您提供图像的 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。