1、将视频转换成图片并保存
% 读取视频
video=VideoReader('E:\MATLAB\wsy.mp4');
%lastFrame = read(video, inf); %如果警告无法确定帧数先使用此条指令读取最后一帧
Framenum=video.NumFrames; %确定总帧数,根据MATLAB版本选择使用NumFrames或NumberOfFrames
disp(Framenum);
% 分离图片
for i=1:Framenum
disp(i);
image_name=strcat('E:\MATLAB\img_',num2str(i),'.jpg'); %指定图片保存路径和名称
I=read(video,i); %读出视频中第i帧图片
imwrite(I,image_name,'jpg'); %保存图片
end
disp('over')
1、将一系列图片生成视频并保存
FramePath = 'E:\MATLAB\img_'; %图像序列所在路径
StartFrame = 1; %定义初始帧
EndFrame = 1500; %定义结束帧。
%生成视频及参数设定
video=VideoWriter('E:\MATLAB\wsy'); %创建一个视频文件,默认是avi格式
video.FrameRate=25; %设置帧速率
open(video); %打开视频
%写入图片
for i=StartFrame:EndFrame
disp(i)
frames=imread([FramePath ,num2str(i),'.jpg']);
writeVideo(video,frames); %将当前图片写入视频
end
close(video); % 关闭创建视频
disp('over');
%根据设置的参数,上述生成的视频包含1500张图片,每秒25张,所以视频时长1分钟;
说明:在将视频转换成图片的程序运行有bug时可以阅读以下内容
①在使用VideoReader函数读取视频文件时,如果遇到类似如“Error Creating Source Reader Reason: 不支持给定的 URL 的字节流类型”的错误,可能的原因是当前的视频文件,在当前的系统下没有相应的解码驱动程序。这时候需要下载安装解码驱动程序,这里提供一个Windows10官方解码驱动程序windows.10.codec.pack 提取码:d9sz,下载安装后重新读取视频,验证VideoReader函数是否可用。
②在确认VideoReader函数可以读取视频的前提下,使用下列代码确定视频总帧数时
Framenum=video.NumFrames;
可能遇到“警告:无法确定此文件中的帧数”的问题,这个问题的原因是视频可能采用可变帧速率进行编码,在这种情况下,MATLAB在读取最后一帧之前无法检测帧数,因此,只要先读取最后一帧即可,使用的指令如下(上面程序中已经给出):
lastFrame = read(video, inf); %如果警告无法确定帧数先使用此条指令读取最后一帧
但是,使用这种方法极有可能导致MATLAB奔溃,以2016a版本的奔溃信息为例。如下

针对这一问题,我给出三种办法供参考:
① 多试几次,有不奔溃的时候(我是通过这种方法使用的),五五开吧,目前没有搞清是什么原因;
② 换个MATLAB版本(MathWorks技术顾问推荐的方法),我在2016a、2019b两个版本上都测试过,也都遇到了奔溃的问题,但也都通过①的办法成功运行过,基本上是可以的。偶然一次机会在2021版本上试了一下,一次性成功了,所以可能2021版本是可以的吧。
③ 转换视频格式,可以借助一些软件将视频转换一下格式,换个编码方式,如果是这样的话可能就没有上述问题了,但转换后的视频不能保证图片是无损的,对于生成图片后续用于图像处理的不推荐该方法。
当然,如果要读取的视频编码方式本身就是可以支持的,那么上面的问题都不会出现,程序可以直接运行。
我的目标是转换表单输入,例如“100兆字节”或“1GB”,并将其转换为我可以存储在数据库中的文件大小(以千字节为单位)。目前,我有这个:defquota_convert@regex=/([0-9]+)(.*)s/@sizes=%w{kilobytemegabytegigabyte}m=self.quota.match(@regex)if@sizes.include?m[2]eval("self.quota=#{m[1]}.#{m[2]}")endend这有效,但前提是输入是倍数(“gigabytes”,而不是“gigabyte”)并且由于使用了eval看起来疯狂不安全。所以,功能正常,
我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h
我需要读入一个包含数字列表的文件。此代码读取文件并将其放入二维数组中。现在我需要获取数组中所有数字的平均值,但我需要将数组的内容更改为int。有什么想法可以将to_i方法放在哪里吗?ClassTerraindefinitializefile_name@input=IO.readlines(file_name)#readinfile@size=@input[0].to_i@land=[@size]x=1whilex 最佳答案 只需将数组映射为整数:@land边注如果你想得到一条线的平均值,你可以这样做:values=@input[x]
这道题是thisquestion的逆题.给定一个散列,每个键都有一个数组,例如{[:a,:b,:c]=>1,[:a,:b,:d]=>2,[:a,:e]=>3,[:f]=>4,}将其转换为嵌套哈希的最佳方法是什么{:a=>{:b=>{:c=>1,:d=>2},:e=>3,},:f=>4,} 最佳答案 这是一个迭代的解决方案,递归的解决方案留给读者作为练习:defconvert(h={})ret={}h.eachdo|k,v|node=retk[0..-2].each{|x|node[x]||={};node=node[x]}node[
我构建了两个需要相互通信和发送文件的Rails应用程序。例如,一个Rails应用程序会发送请求以查看其他应用程序数据库中的表。然后另一个应用程序将呈现该表的json并将其发回。我还希望一个应用程序将存储在其公共(public)目录中的文本文件发送到另一个应用程序的公共(public)目录。我从来没有做过这样的事情,所以我什至不知道从哪里开始。任何帮助,将不胜感激。谢谢! 最佳答案 无论Rails是什么,几乎所有Web应用程序都有您的要求,大多数现代Web应用程序都需要相互通信。但是有一个小小的理解需要你坚持下去,网站不应直接访问彼此
在Cooper的书BeginningRuby中,第166页有一个我无法重现的示例。classSongincludeComparableattr_accessor:lengthdef(other)@lengthother.lengthenddefinitialize(song_name,length)@song_name=song_name@length=lengthendenda=Song.new('Rockaroundtheclock',143)b=Song.new('BohemianRhapsody',544)c=Song.new('MinuteWaltz',60)a.betwee
我正在检查一个Rails项目。在ERubyHTML模板页面上,我看到了这样几行:我不明白为什么不这样写:在这种情况下,||=和ifnil?有什么区别? 最佳答案 在这种特殊情况下没有区别,但可能是出于习惯。每当我看到nil?被使用时,它几乎总是使用不当。在Ruby中,很少有东西在逻辑上是假的,只有文字false和nil是。这意味着像if(!x.nil?)这样的代码几乎总是更好地表示为if(x)除非期望x可能是文字false。我会将其切换为||=false,因为它具有相同的结果,但这在很大程度上取决于偏好。唯一的缺点是赋值会在每次运行
我正在使用Rails构建一个简单的聊天应用程序。当用户输入url时,我希望将其输出为html链接(即“url”)。我想知道在Ruby中是否有任何库或众所周知的方法可以做到这一点。如果没有,我有一些不错的正则表达式示例代码可以使用... 最佳答案 查看auto_linkRails提供的辅助方法。这会将所有URL和电子邮件地址变成可点击的链接(htmlanchor标记)。这是文档中的代码示例。auto_link("Gotohttp://www.rubyonrails.organdsayhellotodavid@loudthinking.
我是Rails的新手,所以请原谅简单的问题。我正在为一家公司创建一个网站。那家公司想在网站上展示它的客户。我想让客户自己管理这个。我正在为“客户”生成一个表格,我想要的三列是:公司名称、公司描述和Logo。对于名称,我使用的是name:string但不确定如何在脚本/生成脚手架终端命令中最好地创建描述列(因为我打算将其设置为文本区域)和图片。我怀疑描述(我想成为一个文本区域)应该仍然是描述:字符串,然后以实际形式进行调整。不确定如何处理图片字段。那么……说来话长:我在脚手架命令中输入什么来生成描述和图片列? 最佳答案 对于“文本”数
我收到格式为的回复#我需要将其转换为哈希值(针对活跃商家)。目前我正在遍历变量并执行此操作:response.instance_variables.eachdo|r|my_hash.merge!(r.to_s.delete("@").intern=>response.instance_eval(r.to_s.delete("@")))end这有效,它将生成{:first="charlie",:last=>"kelly"},但它似乎有点hacky和不稳定。有更好的方法吗?编辑:我刚刚意识到我可以使用instance_variable_get作为该等式的第二部分,但这仍然是主要问题。