本程序的实现的功能主要分为以下三个方面:
1、截屏程序 screencapture.m
2、区域选择
3、录屏
1、截屏程序 screencapture.m
在MATLAB 网站上可以直接下载到相应程序
例如:
imageData = screencapture(0, [20,30,40,50]); % capture a small desktop region
获取桌面特定区域的图像。
2、区域选择
首先获取整个桌面的截图
ss=[1920 1080];%屏幕分辩率
imageData1 = screencapture(0,[0,-210,ss(1),ss(2)]);%[]中为截取区域
h1=figure(1);
imshow(imageData1)
然后通过在画出的图中,选择铁定的区域,这里使用了imrect创建一个矩形框,通过getPosition(h)获取方框的位置以及大小。
%区域选择
h=imrect;
pos=getPosition(h); %通过鼠标获取图像中一个矩形截图区域
% 通过方框的位置确定对于screencapture的位置的输入
x1=pos(1);
y1=1080-pos(2)-pos(4)-210;%y方向的值需要调整,210是本人电脑截图的经验值。
dx=pos(3);
dy=pos(4);
close(h1)
pause(1)
imageData2 = screencapture(0,[x1,y1,dx,dy]);
imshow(imageData2);
3、录屏
实现了特定区域的截图,通过截取多张图然后作出动图gif,或者视频文件,从而实现录屏的功能。这里,主要分享存动图的程序。
global x1 y1 dx dy;
global name
for i=0:50
pause(0.2)
imageData1 = screencapture(0,[x1,y1,dx,dy]);
imshow(imageData1);
[I,map]=rgb2ind(imageData1,256);
if(i==0)
imwrite(I,map,[name,'.gif'],'DelayTime',0.2,'LoopCount',Inf)
else
imwrite(I,map,[name,'.gif'],'WriteMode','append','DelayTime',0.2)
end
end
Ps. 这里,本人主要通过GUI设计了相应的功能。所以变量传递需要在每个模块间设置成全局变量。
参考: