Python实战02:网上下载的视频进行图片截取

admin 2023年11月13日22:24:29评论19 views字数 1600阅读5分20秒阅读模式

今天从B站下载了一些资源图片,从网盘下载后才发现都是几秒的视频。 

作为一个程序员,这种情况不能忍。用potplayer视频播放器可以截取 。但这种批量处理还是程序自动化要快速。

 一、思路

批量读取目录下的视频文件,读取第一帧并保存为同名png图片

二、准备工作

  1. Python内置的函数读取目录及目录下的文件

  2. 通过opencv第三方库获取视频第一帧


要对Python内置的os模块有了解,能够了解读取目录的函数。查找Python第三方视频处理的库有哪些,应用方向和调用难易,选择适合你的库。

三、代码书写

先写一个主处理函数,函数代码块主要实现了目录读取。目录读取处理后要交于第三方视频库处理。这块我们通过传递一个函数参数进行预留处理 。

import os# 获取视频目录及相应视频文件def process(path,fn):    print("开始处理视频剪辑....")    for file in os.listdir(path):        filepath = os.path.join(path, file)        # 子目录不予考虑        if os.path.isdir(filepath):            continue        # 新文件是旧有文件去掉扩展名拼接生成        newfile = file.split('.')[0] + ".png"        newfilepath = os.path.join(path,newfile)        print(filepath,newfilepath)        # 交于视频提取的函数处理        fn(filepath,newfilepath)


完成上面处理过程中的函数实参。通过VideoCapture捕获视频。通过numpy 的tofile保存成图片。

import cv2import sys
# 转化视频为图片    def convert_to_image(oldfile,newfile): print("convert_to_image start ...") cap=cv2.VideoCapture(oldfile)     # 视频占用直接返回 if cap.isOpened() == False: return # 读取视频中第一帧 ret,frame=cap.read() # 保存视频到图片 cv2.imencode(".png",frame)[1].tofile(newfile)    # 资源释放 cap.release() cv2.waitKey(0) cv2.destroyAllWindows()

path = r"E:美女照片超可爱动态壁纸(1)"process(path,convert_to_image)


代码运行:

Python实战02:网上下载的视频进行图片截取

效果:所有视频文件都转化完成了。

Python实战02:网上下载的视频进行图片截取

、遇到的问题

开始使用cv2自带的imwrite函数生成图片文件,但有中文名称目录不能写入。

def convert_by_write(oldfile,newfile):    print("convert_to_image start ...")    cap=cv2.VideoCapture(oldfile)    if cap.isOpened() == False:        return         # 读取视频中第一帧    ret,frame=cap.read()     img = cv2.resize(frame, (2048, 1080))    cv2.imshow("img",img)    cv2.imwrite(newfile,img)    cap.release()     cv2.waitKey(0)    cv2.destroyAllWindows()
path = r"E:美女照片test"process(path,convert_by_write)

这段代码中imshow是可以的。但imwrite对于一些特殊字符不太友好。

、改进

对opencv库深入研究,对图片进行高清处理。比如可以增加灰度后进行图片融合等。

原文始发于微信公众号(程序员老朱):Python实战02:网上下载的视频进行图片截取

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年11月13日22:24:29
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Python实战02:网上下载的视频进行图片截取http://cn-sec.com/archives/2202644.html

发表评论

匿名网友 填写信息