matlab 光流法工具箱,光流法%matlab笔记
已经跑通 但是subplot(223)里本来是处理后的前景图像掩膜,但是显示不太好,等过一阵儿改进一下。
这个可能会碰到那个computeColor的错误,找一下那个compute.m文件放到文件夹里就好了。因为这个里边用到好多工具箱的函数。大概这样,对不对不能保证。反正subplot(222)里已有效果,改进的话自己修改一下就好。
cenx1=[];
ceny1=[];
cenx2=[];
ceny2=[];
videoReader =
vision.VideoFileReader('4_1.avi','ImageColorSpace','Intensity','VideoOutputDataType','uint8');
% 类型转化对象
converter = vision.ImageDataTypeConverter;
% 光流对象
opticalFlow = vision.OpticalFlow('ReferenceFrameDelay',
1);
opticalFlow.OutputValue = 'Horizontal and vertical components
in complex form';
if 0 % 使用的算法
opticalFlow.Method = 'Lucas-Kanade';
opticalFlow.NoiseReductionThreshold = 0.001; % 默认是0.0039
else
opticalFlow.Method = 'Horn-Schunck';
opticalFlow.Smoothness = 0.5; % 默认是1
end
% 显示对象
frame = step(videoReader);
frame=imresize(frame,[240 320]);
h=figure(1);
set(h,'name','光流法','Numbertitle','off');
subplot(221)
himg = imshow(frame);
text(3, 15, sprintf('跟踪视频:第%d帧', 1), 'FontWeight', 'Bold',
'Color', 'r');
subplot(222)
hof = imshow(frame);
text(3, 15, sprintf('跟踪视频:第%d帧', 1), 'FontWeight', 'Bold',
'Color', 'r');
% 开始播放
i=1;
while ~isDone(videoReader)
rightEdge=0;
leftEdge=0;
bottomEdge=0;
topEdge=0;
wd =0;
hg = 0;
widt = 0;
heit = 0;
% 得到一帧
i=i+1;
frame = step(videoReader);
frame=imresize(frame,[240 320]);
% 格式转化
im = step(converter, frame);
% 计算光流
of = step(opticalFlow, im);
fg=uint8(abs(real(of)));
subplot(223),imshow(fg);text(3, 15, sprintf('第%d帧前景', i),
'FontWeight', 'Bold', 'Color', 'r');
% 光流图转化
ofI = computeColor(real(of), imag(of));
% 显示
subplot(221),imshow(frame);text(3, 15, sprintf('第%d帧', i),
'FontWeight', 'Bold', 'Color', 'r');
subplot(222),imshow(ofI);text(3, 15, sprintf('第%d帧光流彩色图', i),
'FontWeight', 'Bold', 'Color', 'r');
rows = size(fg, 1); %pixels的第1维即为视频画面的行数
cols = size(fg, 2); %pixels的第2维即为视频画面的列数
% 寻找上下边界
cou=1;
for xh = 1:rows
for xw = 1:cols
if
fg(xh, xw) > 0.5
bottomEdge = xh;
if cou == 1
topEdge = bottomEdge;
end
cou = cou+1;
break;
end
end
end
% 寻找左右边界
coun=1;
for xw = 1:cols
for xh = 1:rows
if
fg(xh, xw) > 0.5
rightEdge =xw;
if coun == 1
leftEdge = rightEdge;
coun = coun+1;
end
break;
end
end
end
if
(rightEdge==0&&leftEdge==0&&bottomEdge==0&&topEdge==0)||(rightEdge==320&&leftEdge==1&&bottomEdge==240&&topEdge==1)
subplot(2,2,4);
imshow(frame, []);
%显示原视频
% axes(handles.axes1);
% imshow(pixels(:, :, :,
i), []);
text(3, 15,
sprintf('跟踪视频:第%d帧:无目标', i), 'FontWeight', 'Bold', 'Color',
'r');
else
wd =
rightEdge-leftEdge;
hg =
bottomEdge-topEdge;
widt = wd/2;
heit = hg/2;
cenx =
leftEdge+widt;
ceny =
topEdge+heit;
cenx1(i-1)=cenx;
% 创建一个动态数组来记录矩形框的中心坐标
ceny1(i-1)=ceny;
cenx2(i-1)=cenx;
% 创建一个动态数组来记录矩形框的中心坐标
ceny2(i-1)=ceny;
c=find(cenx2==0);
cenx2(c)=[];
ceny2(c)=[];
% 显示并标记
subplot(2,2,4);
imshow(frame, []);
%显示原视频
% axes(handles.axes1);
% imshow(pixels);
hold on
rectangle('Position',[leftEdge topEdge wd hg], 'EdgeColor', 'r',
'LineWidth', 2);
plot(cenx2,ceny2,
'm-.s','MarkerSize',1, 'LineWidth', 1) % 显示矩形框的中心坐标
text(3, 15,
sprintf('跟踪视频:%d帧:目标出现',i), 'FontWeight', 'Bold', 'Color',
'r');
hold off
end
% set(himg, 'cdata', frame)
% set(hof, 'cdata', ofI)
% drawnow
pause(0.01);
end
release(videoReader);
matlab 光流法工具箱,光流法%matlab笔记相关推荐
- matlab滤波器设计工具箱带阻滤波器,用matlab信号处理工具箱进行fir滤波器设计的三种方法...
用matlab信号处理工具箱进行fir滤波器设计的三种方法 摘 要 介绍了利用 MATLAB 信号处理工具箱进行 FIR 滤波器设计的三种方法:程序设计法. FDATool 设计法和 SPTool 设 ...
- matlab中神经网络工具箱的传递函数,matlab神经网络工具箱函数汇总
1. 网络创建函数 newp 创建感知器网络 newlind 设计一线性层 newlin 创建一线性层 newff 创建一前馈BP网络 newcf 创建一多层前馈BP网络 newfftd ...
- lyapunov指数求取时运用qr法与jacobi法之间的区别与联系【基于matlab的动力学模型学习笔记_10】
在进行lyapunov指数的求取时,需要知道离散动力学系统对应Jacobi矩阵的特征值,qr法与Jacobi法都可以求解矩阵特征值,其中qr法求解的是矩阵所有特征值,而Jacobi法求解的是矩阵的最大 ...
- s matlab toolbox,Matlab Robotic Toolbox工具箱学习笔记(一 )
Matlab Robotic Toolbox工具箱学习笔记(一) 软件:matlab2013a 工具箱:Matlab Robotic Toolbox v9.8 Matlab Robotic Toolb ...
- 图像相减的matlab仿真及光栅滤波法,图像相减的MATLAB 仿真及光栅滤波法实验实现...
图像相减的MATLAB 仿真及光栅滤波法实验实现 毕业设计(论文)中期报告题目图像相减的MATLAB仿真及光栅滤波法实验实现院(系)光电学院专业光信息科学与技术班级090106姓名陈凤学号090106 ...
- 高斯投影法正反算代码MATLAB版本
高斯投影法正反算代码MATLAB版本 说明 高斯投影正算 高斯投影反算 说明 之前一个帖子给出了正反算的C语言代码 链接如下: link 我把它移植到了matlab中 支持向量输入 高斯投影正算 高斯 ...
- 【MATLAB深度学习工具箱】学习笔记--体脂估计算例再分析:拟合神经网络fitnet里面的数据结构】
原文链接如下 [MATLAB深度学习工具箱]学习笔记--体脂估计Body Fat Estimation_bear_miao的博客-CSDN博客介绍本示例展示一个函数拟合神经网络如何根据解剖学测量结果估 ...
- 【MATLAB深度学习工具箱】学习笔记--体脂估计算例再分析:拟合神经网络fitnet里面的函数】
介绍 上一篇 [MATLAB深度学习工具箱]学习笔记--体脂估计算例再分析:拟合神经网络fitnet里面的数据结构]_bear_miao的博客-CSDN博客原文链接如下[MATLAB深度学习工具箱]学 ...
- 【MATLAB强化学习工具箱】学习笔记--actor网络和critic网络的结果放在哪里?
原算例见 [MATLAB强化学习工具箱]学习笔记--在Simulink环境中训练智能体Create Simulink Environment and Train Agent_bear_miao的博客- ...
最新文章
- 怎么提高大表和小表的连接查询效率?
- NFS挂载的问题svc: failed to register lockdv1 RPC service
- excel函数去重_将数字去重,然后按从小到大的顺序连接起来!
- 通用权限管理系统组件 (GPM - General Permissions Manager) 不改数据库、甚至不写代码就集成铜墙铁壁权限管理组件...
- 再不懂ZooKeeper,就安安心心把这篇文章看完
- Spring data JPA方法命名规则
- Docker Weave 介绍 or 工作原理
- SOPC自定义外设(IP)的地址对齐
- 在Windows平台下的IIS中发布Django应用
- log4j 配置文件参数说明
- 『原创经典』标准日本语初级笔记完整版(1)
- 如何删除2345浏览器网络导航主页
- 电感电容阻抗和公式记录
- linux 动态ip解析,Linux DDNS 动态IP地址解析
- Python三维绘图——Matplotlib
- Keras中verbose的作用
- 中国高端IC封装市场调查分析与投资趋势研究报告2022-2028年
- 手把手教你制作一目了然的可视化地图
- AWK用法示例 awk命令
- 计算机主机重启键,重启(计算机术语)_百度百科