使用opencv把视频转图片以及图片模糊问题

代码如下:

# -*- coding: utf-8 -*-#
# Author:       weiz
# Date:         2019/11/26 10:22
# Name:         main
# Description:
import os
import cv2
import shutil


def video2images(video_p_n, img_p, dst_folder, index):
    video = cv2.VideoCapture()
    if not video.open(video_p_n):
        print("can not open the video")
        exit(1)
    count = 1
    while True:
        _, frame = video.read()
        if frame is None:
            break
        if count % dst_folder == 0:
            save_path = "{}_{:>05d}.png".format(dst_folder, index)
            save_path = img_p + '/' + save_path
            cv2.imwrite(save_path, frame, (cv2.IMWRITE_PNG_COMPRESSION, 0))
            index += 1
        count += 1
    video.release()
    # 打印出所提取帧的总数/以及原本视频总帧数
    print("Totally save {:d}/{:d} pics".format((index-1), count))



if __name__ == '__main__':
    videoPath = "./video"       # 视频存放的文件夹
    genImages = "./images"      # 最后图片保存的位置
    EXTRACT_FREQUENCY = 10      # 帧提取频率
    print("workSpace:{}".format(os.getcwd()))
    videoName = os.listdir(videoPath)
    if os.path.exists(genImages):
        shutil.rmtree(genImages)  # 删除原来的图片库,以防混乱
        print("Old images deleted!")
    os.mkdir(genImages)
    for name in videoName:
        imglib = genImages + '/' + name[:-4]
        os.mkdir(imglib)
        video_p_n = videoPath + '/' + name
        video2images(video_p_n, imglib, EXTRACT_FREQUENCY, 1)

源视频大小为:633.4MB

视频转不同格式图片的情况:

生成图片的格式 生成图片总大小 单幅图片大小 生成时设置的参数
jpg 551.1MB 286.9KB 95(jpg默认的参数)
png 1.8GB 913.7KB 3(png默认的参数)
png 11.2GB 6.2MB 0(png图片压缩率最小)
bmp 11.2GB 6.2MB

说明:

  1. 只要是jpg格式的图片就会压缩,在opencv中图片压缩后的质量参数为0到100,默认是95。
  2. png格式比jpg格式会好,属于高质量的图片保存格式。opencv中压缩等级从0到9,默认是3,压缩速度最快。
  3. bmp格式的图片是无损图片格式,但占用的磁盘内存会比较大。没有找到与bmp格式设置相关的说明及参数。
  4. 视频转成jpg格式的图片,图片的像素与源视频中的像素会有所不同。如果用视频和转成图片后分别用于训练、识别等任务,可能会造成不一样的结果。这点需要注意。
  5. 一般生成默认的png图片就够用,即:压缩等级为3。
  6. 生成图片总大小也与视频转图片时的提取率有关。上面的代码提取率是每10张提取一张。

opencv官网说明

发布了82 篇原创文章 · 获赞 126 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/qq_31112205/article/details/103416920
今日推荐