教你用matlab实时处理摄像头视频并保存
原本小虎想把标题写出“教你制造简易美颜相机”的,但是后来发现图像美颜处理的算法有点复杂,一时半会儿学不会,所以就只写了实时处理视频并保存了。这里处理只是经过了彩色直方图均衡化哦。
写入方法有写入图片或视频,写入视频是我后面更新的,没有逐步分析,在完整代码可见。
效果
首先,自动存了10张图片(可以自己更改数量和采样频率),然后再看看处理效果。
emmm,小虎承认直方图均衡化并不能直接拿去美颜,但是在这里也发挥了直方图均衡化的作用,可以看到,室内暗的地方经过均衡化后也和室外一样可以被较清晰地看见。
代码分析
1打开摄像头并抓取
hard=imaqhwinfo;
name=hard.InstalledAdaptors{1};
vid=videoinput(name,1);
摄像头显示并计时。
preview(vid);
start(vid);
2将视频帧转化为图片
img = getsnapshot(vid);
image(img);
3彩色直方图均衡化并显示
HSV=rgb2hsv(img);
H=HSV(:,:,1);
S=HSV(:,:,2);
V=HSV(:,:,3);
v1=histeq(V);
newimg=cat(3,H,S,v1);
img2=hsv2rgb(newimg);
imshow(img2);
4保存图片
filename=int2str(i);
filename=['./image/',filename,'.jpg'];
imwrite(img2,filename);
5关于循环参数
下面这一段表示取总共10张图片。
numberofimg=10;
for i=1:numberofimg
时间间隔是0.5s。
pause(0.5);
6删除视频流,防止占内存
stop(vid);
closepreview(vid);
delete(vid);
clear
完整代码
%% Input from camera
Hard = imaqhwinfo;
Name = Hard.InstalledAdaptors{1};
Input = videoinput(Name,1);
preview(Input);
start(Input);
%% Write into video
Output = VideoWriter('Output.avi');
Output.VideoCompressionMethod
open(Output)
%% Image processing and writing
numberofimg = 10; % frames per second (fps)
for i = 1:numberofimg
%% Image processing
img = getsnapshot(Input);
image(img);
HSV = rgb2hsv(img);
H = HSV(:,:,1);
S = HSV(:,:,2);
V = HSV(:,:,3);
v1 = histeq(V);
newimg = cat(3,H,S,v1);
img2 = hsv2rgb(newimg);
imshow(img2);
%% write into image
filename = int2str(i);
filename = [filename,'.jpg'];
imwrite(img2,filename);
%% write into video
writeVideo(Output,img2)
%% sample time interval
pause(0.5);
end
%%
stop(Input);
closepreview(Input);
delete(Input);
close(Output)
clear
配置问题
可能会出现没有视频工具箱的情况,点击进入,登录下载即可(登录不需要重装==)。
Warning: No Image Acquisition adaptors found. To install Hardware Support
Packages, use Add-On Explorer.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)