摘要
原本小虎想把标题写出“教你制造简易美颜相机”的,但是后来发现图像美颜处理的算法有点复杂,一时半会儿学不会,所以就只写了实时处理视频并保存了。这里处理只是经过了彩色直方图均衡化哦。
效果
首先,自动存了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