大数据应用 京东金融大数据竞赛猪脸识别(1)-从视频提取图像
沉沙 2018-10-11 来源 : 阅读 922 评论 0

摘要:本篇教程介绍了大数据应用 京东金融大数据竞赛猪脸识别(1)-从视频提取图像,希望阅读本篇文章以后大家有所收获,帮助大家对大数据云计算大数据应用的理解更加深入。

本篇教程介绍了大数据应用 京东金融大数据竞赛猪脸识别(1)-从视频提取图像,希望阅读本篇文章以后大家有所收获,帮助大家对大数据云计算大数据应用的理解更加深入。

<

2017年11月的京东金融大数据竞赛参与人数最多的是猪脸识别的算法比赛,参加整个大数据比赛的有四千多人,而猪脸识别算法组就有一千多人。可见,搞图像识别的的人很多啊。想要提升自己价值的小伙伴们,向语音、文本、机器人等领域进发吧,有了机器学习的基础,入门这些领域应该都不是太难。
比赛给的数据是30头猪的视频,做识别的第一步还是从视频中去图像吧。本想用以前写过的视频取帧程序。看Matlab示例的时候发现用Matlab取帧更简便易行,那就用它吧。这样又省了很多时间。代码如下:

%exam1.m extract frame from video
clc;   
close all;   
imtool close all;  
clear; 
%30段视频在本代码同级目录video文件夹下,格式为mp4
fpath = [pwd,‘\video\*.mp4‘];
fname = dir(fpath);
fnum = numel(fname);
vidpath = [pwd,‘\video‘];
try  
    for i=1:fnum
        videoname = fullfile(vidpath,fname(i).name);
                %读取视频数据
        videoObject = VideoReader(videoname);
        % 获取视频中帧数.
        numberOfFrames = videoObject.NumberOfFrames; 
        vidHeight = videoObject.Height;
        vidWidth = videoObject.Width;
        numberOfFramesWritten = 0;

        figure;        
        writeToDisk = true;   
        %对视频文件全路径进行分离.
        [folder, baseFileName, extentions] = fileparts(videoname);  
        %获取当前路径       
        folder = pwd;
        %在当前路径下建立子文件夹image,并在image下为各视频建立以文件名命名的子文件夹,用以存放该视频提取的帧
        outputFolder = sprintf(‘%s/image/%s‘, folder, baseFileName);        
        if ~exist(outputFolder, ‘dir‘)
            mkdir(outputFolder); 
        end  
        %每分钟约为30帧图像,每隔15帧取一帧                
       for frame = 1 :15: numberOfFrames  
            %读取帧数据
            thisFrame = read(videoObject, frame);
            image(thisFrame);  
            caption = sprintf(‘Frame %4d of %d.‘, frame, numberOfFrames);  
            title(caption, ‘FontSize‘, fontSize);  
            drawnow; % Force it to refresh the window.  
            %将图像帧数据写入文件  
            if writeToDisk  
                % 创建图像名,格式为“视频名-帧序号”
                imgName = sprintf(‘%s-%04d.jpg‘,baseFileName, frame);  
                outputFullFileName = fullfile(outputFolder, imgName);      
                text(5, 15, imgName, ‘FontSize‘, 20);  
                % Extract the image with the text "burned into" it.  
                frameWithText = getframe(gca);  .  
                imwrite(frameWithText.cdata, outputFullFileName, ‘jpg‘);  
            end  

            % 输出提取信息.  
            if writeToDisk  
                progressIndication = sprintf(‘Wrote frame %4d of %d.‘, frame, numberOfFrames);  
            else  
                progressIndication = sprintf(‘Processed frame %4d of %d.‘, frame, numberOfFrames);  
            end  
            disp(progressIndication);      
            numberOfFramesWritten = numberOfFramesWritten + 1;  
       end  
    end
catch
        warning(‘Problem using function.  Assigning a value of 0.‘);
        a = 0;
end  

该程序运行完后,就得到了30头猪的图像信息。若需增加数据量,可将提取帧的间隔减小。    

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标大数据云计算大数据应用频道!

本文由 @沉沙 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程