京东猪脸识别比赛数据预处理:用Python将视频每一帧提取存储为图片

京东猪脸识别比赛数据预处理:用Python将视频每一帧提取存储为图片最近参加京东的猪脸识别比赛,训练集是30个视频,需要将视频的每一帧提取出来存储为图片,存入对应的文件夹(分类标签)。本例是直接调用了cv2模块中的VideoCapture。但有个问题,每一个视频转换得到的30个子文件夹里,都有2952张图片,但第2952张是空的,所以只有运用强大的Linux递归删除符合条件的文件了

大家好,又见面了,我是你们的朋友全栈君。

最近参加京东的猪脸识别比赛,训练集是30个视频,需要将视频的每一帧提取出来存储为图片,存入对应的文件夹(分类标签)。

本例是直接调用了cv2 模块中的 VideoCapture。一次运行,大概10分钟,就能得到预处理后的分类图片了,具体代码如下。

视频每一帧提取存储为图片代码

#! encoding: UTF-8

import os

import cv2
import cv

videos_src_path='/sata_disk/E_office/zhouhongli/pig/train'
images_save_path='/sata_disk/E_office/zhouhongli/pig/frame'

videos = os.listdir(videos_src_path)
videos = filter(lambda x: x.endswith('mp4'), videos)

for each_video in videos:
    print each_video

    # get the name of each video, and make the directory to save frames
    each_video_name,_=each_video.split('.')
    os.mkdir(images_save_path +'/'+ each_video_name)

    each_video_save_full_path=os.path.join(images_save_path, each_video_name) + '/'

    # get the full path of each video, which will open the video tp extract frames
    each_video_full_path=os.path.join(videos_src_path, each_video)

    cap=cv2.VideoCapture(each_video_full_path)
    frame_count = 1
    success = True
    while(success):
        success, frame=cap.read()
        print 'Read a new frame: ', success

        params = []
        params.append(cv.CV_IMWRITE_PXM_BINARY)
        params.append(1)
        cv2.imwrite(each_video_save_full_path + each_video_name + "_%d.jpg" % frame_count, frame, params)

        frame_count = frame_count+1

cap.release()

递归删除文件的问题

但有个问题,每一个视频转换得到的30个子文件夹里,都有2952张图片,但第2952张是空的,所以只有运用强大的Linux递归删除符合条件的文件了,我是这样删除滴。

zhouhongli@1080TI:~$ find  . -name '*_2952.jpg' -size 0 -print0 |xargs -0 rm

参考

python tools:将视频的每一帧提取并保存
http://blog.csdn.net/u010167269/article/details/53268686
Linux find 与 rm 联动删除符合条件的文件
https://maoxian.de/2015/12/1362.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/151885.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 免费LInux主机资源

    免费LInux主机资源

    2021年11月15日
  • 关于颜色的十六进制对照表图片_84的十六进制

    关于颜色的十六进制对照表图片_84的十六进制关于颜色的十六进制对照表便于查找ctrl+F调色板文字查找颜色英文代码形象描述十六进制RGBLightPink浅粉红#FFB6C1255,182,193Pink粉红#

  • 代码主题darcula_darcula主题模式是()模式。_学小易找答案

    代码主题darcula_darcula主题模式是()模式。_学小易找答案【多选题】androidstudio安装并配置完成后,在命令行窗口输入()命令验证配置成功。【填空题】darcula主题模式是()模式。【单选题】当前unity官网最新版本是()【多选题】如何将制表位删除()【单选题】B大调的谱号为:【判断题】受拉的杆件可以简化为一个点,因为除了端头以外,其它任何位置的一点的力学行为都是相同的。【单选题】Android是一种基于()的自由及开放源代码的…

  • go int转string_map转list对象数组

    go int转string_map转list对象数组最近用go重构python项目。遇见一些问题,简单记录一下。1.string转map为什么要想到这个转换方式呢,主要是python项目中用到的是string转字典。比如:前端传过来的{“book”:”python基础教程”}。用python简单接收之后,用json.load很简单转为字典。用go的话,最简单的方式是string转map。class_detail_…

  • HDU 1245 Saving James Bond

    HDU 1245 Saving James Bond

    2021年12月15日
  • linux启动ftp命令_linux安装ftp命令

    linux启动ftp命令_linux安装ftp命令ftp服务器在网上较为常见,Linuxftp命令的功能是用命令的方式来控制在本地机和远程机之间传送文件下面由学习啦小编为大家整理了linux下开启ftp命令的相关知识,希望对大家有所帮助!linux下启动FTP命令的方式一般linux都有vsftpd吧,启动命令是servicevsftpdstart,你要限制匿名登录的话,修改它的配置文件/etc/vsftpd/vsftpd.conf,把an…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号