教你用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

完整代码

hard=imaqhwinfo;
name=hard.InstalledAdaptors{1};
vid=videoinput(name,1);
preview(vid);
start(vid);
% write i
numberofimg=10;
for i=1:numberofimg
    img = getsnapshot(vid);
    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);
    filename=int2str(i);
    filename=[filename,'.jpg'];
    imwrite(img2,filename);
    pause(0.5);
end
stop(vid);
closepreview(vid);
delete(vid);
clear
发布了82 篇原创文章 · 获赞 70 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/Davidietop/article/details/105217677