教你用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.
在这里插入图片描述

posted @   狂小虎  阅读(406)  评论(0编辑  收藏  举报
编辑推荐:
· 基于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)
点击右上角即可分享
微信分享提示