Mathematica视频处理实例-边缘检测

该博客介绍了如何在无法使用Matlab的情况下,利用Mathematica进行视频压缩和处理。作者首先压缩视频到480p,然后导入视频并将其转化为ImageList。接着,对每一帧应用EdgeDetect函数进行边缘检测处理,并将处理后的图像合并。最后,导出处理后的视频并播放。提供了一气呵成的完整代码示例。
摘要由CSDN通过智能技术生成

起因是刷到了视频链接: link
但是由于某些原因窝工不能使用Matlab于是打算用Mathematica复刻这个内容
第一期首先讲Mathematica的视频处理

压缩视频

导入原视频demo.mp4,直接导出为480p
电脑配置高且有耐心等的可以略过这一步

Export["C:\\Users\\compress.mp4",
	Import["C:\\Users\\demo.mp4"], RasterSize -> 480]

导入视频

控制导入类型为ImageList,后面所有的图像处理都是基于图像(Image)的,而使用列表(List)串连图像

sorce = Import[
   "C:\\Users\\compress.mp4", "ImageList"]

处理视频

一些因为个人水平有限写出的奇葩代码,,
使用Part命令从List中提取单个元素。具体的写法就是

List_name[[i]]
选出List里面第i个元素(计数从1开始)

用process作为中间变量,取出一幅图片进行处理
用outtemp作为输出缓存,将处理后的图片保存到ImageList里面
前面两句新建出两个List类型的变量出来
循环处理,将outtemp和process合并起来

process = {EdgeDetect[sorce[[1]]]};
outtemp = process;
For[i = 2, i < Length[sorce] + 1, i++,
 process = {EdgeDetect[sorce[[i]]]};
 outtemp = Join[outtemp, process]]

导出视频

导出的时候可以直接写文件名到地址位置
帧速率需要自行设置,默认应该是15帧左右

Export["C:\\Users\\output.mp4", outtemp, FrameRate -> 30]

播放视频

首先将视频生成串流信号,然后控制开始播放
这个时候是看不到输出的,需要再通过动态展示当前帧才可以看到播放的视频

v = VideoStream[
   "C:\\Users\\output.mp4"];
VideoPlay[v];
Dynamic[v["CurrentFrame"]]

一口气全做对

把所有代码连起来:
在mathematica里面语句结尾打上" ; "的话这一句的结果就不会输出啦,但是可以被下一句调用,这样会比较简洁
在这里插入图片描述

Export["C:\\Users\\YawnFun\\Desktop\\0713\\compress.mp4",
  
  Import["C:\\Users\\YawnFun\\Desktop\\0713\\demo.mp4"], 
  RasterSize -> 480];
sorce = Import["C:\\Users\\YawnFun\\Desktop\\0713\\compress.mp4", 
   "ImageList"];
process = {EdgeDetect[sorce[[1]]]};
outtemp = process;
For[i = 2, i < Length[sorce] + 1, i++,
  process = {EdgeDetect[sorce[[i]]]};
  outtemp = Join[outtemp, process]];
Export["C:\\Users\\YawnFun\\Desktop\\0713\\output.mp4", outtemp, 
  FrameRate -> 30];
v = VideoStream["C:\\Users\\YawnFun\\Desktop\\0713\\output.mp4"];
VideoPlay[v];
Dynamic[v["CurrentFrame"]]

工程和素材放在阿里云盘啦,有需要的朋友欢迎下载~
链接: 工程和素材下载

Mathematica 是数学领域的一个巨人,发布的 Mathematica 软件在各个前沿行业的科学计算,仿真,建模等应用中发挥着关键作用。 我下载了45个典型的 Mathematica 演示范例,供打包下载学习。 AreTheseLinesStraight-source.nb BoilingPointOfWaterOnSeveralPlanets-source.nb CassiniSpaceflight-source.nb CellularAutomataOnTrivalentNetworks-source.nb CIEChromaticityDiagram-source.nb CogwheelDrive-source.nb ComplexAdditionOfHarmonicMotionsAndThePhenomenonOfBeats-source. CosineOffsetCurves-source.nb CurlicueFractal-source.nb DayAndNightWorldClock-source.nb DigitalTiltShiftPhotography-source.nb Emoticon-source.nb IcosahedronBall-source.nb InsulinMolecule-source.nb JackLewSignatureFunction-source.nb KeyboardAndComposer-source.nb KomanVariations-source.nb LengthScalesInTheSolarSystem-source.nb LeonardoDaVincisOrnithopter-source.nb LookingAtACube-source.nb MicrowaveOven-source.nb MosaicEffectForPhotographicImages-source (1).nb MosaicEffectForPhotographicImages-source.nb Mountainscape-source.nb PicturePuzzle-source.nb PicturePuzzle.cdf PolynomialAndDerivative-source.nb RadialEngine-source.nb ReliefShadedElevationMap-source.nb SaturnsSeasonalSundial-source.nb SegmentingAMedicalImage-source.nb SmileyChanger-source.nb SpringReturnButton-source.nb SunflowerSeedArrangements-source.nb SunflowerSeedArrangements-source.pdf SurfaceWithBranchCuts-source.nb TermWeightingWithTFIDF-source.nb TheUlamPrimeSpiral-source.nb ThickeningAPolygonMeshForRapidPrototyping3DPrinting-source.nb TravelingSalesmanArt-source.nb TreeBender-source.nb Tries-source.nb TwentyDodecahedronTowers-source.nb VoronoiImage-source.nb WhirlingPolygons-source.nb
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值