博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
京东金融大数据竞赛猪脸识别(1)-从视频提取图像
阅读量:6268 次
发布时间:2019-06-22

本文共 2621 字,大约阅读时间需要 8 分钟。

2017年11月的京东金融大数据竞赛参与人数最多的是猪脸识别的算法比赛,参加整个大数据比赛的有四千多人,而猪脸识别算法组就有一千多人。可见,搞图像识别的的人很多啊。想要提升自己价值的小伙伴们,向语音、文本、机器人等领域进发吧,有了机器学习的基础,入门这些领域应该都不是太难。

比赛给的数据是30头猪的视频,做识别的第一步还是从视频中去图像吧。本想用以前写过的视频取帧程序。看Matlab示例的时候发现用Matlab取帧更简便易行,那就用它吧。这样又省了很多时间。代码如下:

%exam1.m extract frame from videoclc;   close all;   imtool close all;  clear; %30段视频在本代码同级目录video文件夹下,格式为mp4fpath = [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      endcatch        warning('Problem using function.  Assigning a value of 0.');        a = 0;end

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

转载于:https://blog.51cto.com/8764888/2085918

你可能感兴趣的文章
Hadoop1.2.1 全然分布式集群搭建实操笔记
查看>>
第三百二十七节,web爬虫讲解2—urllib库爬虫—基础使用—超时设置—自动模拟http请求...
查看>>
MVC总结--MVC简单介绍以及和WebForm差别
查看>>
tiny4412 裸机程序 五、控制icache【转】
查看>>
VB.NET多线程入门
查看>>
国外物联网平台初探(二) ——微软Azure IoT
查看>>
findlibrary returned null产生的联想,Android ndk开发打包时我们应该怎样注意平台的兼容(x86,arm,arm-v7a)...
查看>>
Android事件分发机制源代码分析
查看>>
《设计模式》结构型模式
查看>>
[javase学习笔记]-8.3 statickeyword使用的注意细节
查看>>
Spring集成RabbitMQ-使用RabbitMQ更方便
查看>>
Nginx 设置域名转向配置
查看>>
.net core 实现简单爬虫—抓取博客园的博文列表
查看>>
FP-Tree算法的实现
查看>>
Android 用Handler和Message实现计时效果及其中一些疑问
查看>>
Dos命令删除添加新服务
查看>>
C#.NET常见问题(FAQ)-索引器indexer有什么用
查看>>
hadoop YARN配置参数剖析—MapReduce相关参数
查看>>
Java 正则表达式详细使用
查看>>
【ADO.NET】SqlBulkCopy批量添加DataTable
查看>>