京东猪脸识别比赛数据预处理:用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

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Flume-Kafka-Flume对接Kafka以及Kafka数据分类传输

    Flume-Kafka-Flume对接Kafka以及Kafka数据分类传输Flume对接KafkaFlume日志采集组件;Flume对接kafka主要是为了通过kafka的topic功能,动态的增加或者减少接收的节点,并且Flume要对接多个节点是需要多个channel和sink的会导致内存不够的情况。那么可以实现的场景就是Flume采集日志文件,通过kafka给多给业务线使用。1)配置flume(flume-kafka.conf)#definea1.sources=r1a1.sinks=k1a1.channels=c1#sourcea1

    2022年6月23日
    31
  • 查看Maven版本_maven部署

    查看Maven版本_maven部署一、下载压缩包官方地址:Maven-DownloadApacheMaven​maven.apache.org直接使用wget命令进行下载maven压缩包>wgethttps://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz二、解压ta…

    2022年8月22日
    6
  • 数据权限设计(转载)

    数据权限设计(转载)一、前言几乎在任何一个系统中,都离不开权限的设计,权限设计=功能权限+数据权限,而功能权限,在业界常常是基于RBAC(Role-BasedAccessControl)的一套方案。而数据权限,则根据不同的业务场景,则权限却不尽相同,应该根据具体的场景巧妙设计;且必须在项目开始时进行设计,不像功能权限一样,在项目结束的时候在追加。注:更细还可以加入字段权限1.1权限…

    2022年7月16日
    13
  • minikube 安装指南

    minikube 安装指南

    2021年5月14日
    122
  • Eclipse配置maven环境「建议收藏」

    1、首先下载maven,下载地址为:http://maven.apache.org/download.cgi,然后选择apache-maven-3.6.0-bin.tar.gz,如下图所示:2、然后新建一个maven目录,如下图所示:3、将下载的maven包解压到该目录中,如下图所示:4、配置环境变量,新建一个MAVEN_HOME,值为:D:\InstallFile\Mav…

    2022年4月10日
    52
  • java 发送邮件 带附件或者表格

    java 发送邮件 带附件或者表格packagecom.sub.utils;importjavax.activation.DataHandler;importjavax.activation.DataSource;importjavax.activation.FileDataSource;importjavax.mail.*;importjavax.mail.internet.*;importjava…

    2022年5月14日
    62

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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