一:效果展示
方法1 :通过IP摄像头进行连接(会通过两个软件进行演示)
脚本效果图
GUI界面图
二,准备环境
手机下载软件(1):DroidCam ![](https://i-blog.csdnimg.cn/direct/fab7b45d30c248738ac021b5e1bf1654.png)
下载软件(2):IP 摄像头![](https://i-blog.csdnimg.cn/direct/4231068be9674402aecc34fad7fe3559.jpeg)
上面两款软件各有优缺点,软件1延迟低,但不能切换手机摄像的主摄像头,软件2延迟有一点高,但可以设置手机摄像的各种参数
电脑端:安装 MATLAB Support Package for IP Cameras
三,主要过程
先讲脚本效果
1,软件1的脚本实现
先确保电脑手机连接到同一个WiFi下,打开DroidCam 如下显示,得到摄像头的 URL
http://10.86.128.29:4747/video/mjpg.cgi
http://10.86.128.29:4747/video/mjpg.cgi %%在这个软件 /mjpg.cgi 是要加上的
然后把下面代码放在matlab中,记得URL要改成手机显示的URL
function live_camera_view()
% 定义摄像头的 URL
cameraURL = 'http://10.86.128.29:4747/video/mjpg.cgi';
% 创建摄像头连接
camera = ipcam(cameraURL);
% 创建图形界面窗口
hFig = figure('Name', 'Live Camera Feed', 'NumberTitle', 'off', ...
'CloseRequestFcn', @closeFigure);
% 创建一个 axes 控件来显示图像
hAx = axes('Parent', hFig);
% 图像保存路径
savePath = fullfile(getenv('USERPROFILE'), 'Desktop', 'SavedImages');
if ~exist(savePath, 'dir')
mkdir(savePath);
end
% 设置一个定时器来定时获取并更新图像
t = timer('ExecutionMode', 'fixedRate', 'Period', 0.1, ...
'TimerFcn', {@updateImage, camera, hAx, savePath});
% 在关闭窗口时清理资源
hFig.CloseRequestFcn = @(src, evt) stopAndDeleteTimer(src, t, camera);
% 启动定时器
start(t);
end
function updateImage(obj, event, camera, hAx, savePath)
% 获取最新图像
img = snapshot(camera);
% 在 axes 控件中显示图像
imshow(img, 'Parent', hAx);
% 定时自动拍照并保存
persistent lastSnapshotTime;
if isempty(lastSnapshotTime) || toc(lastSnapshotTime) > 3
% 保存图像
filename = fullfile(savePath, ['Snapshot_' datestr(now, 'yyyy-mm-dd_HH-MM-SS') '.jpg']);
imwrite(img, filename);
disp(['Image saved: ' filename]);
% 重置计时器
lastSnapshotTime = tic;
end
end
function stopAndDeleteTimer(fig, t, camera)
% 停止定时器
stop(t);