实时跟踪摄像头跟踪视频中的红 {MOD}运动目标,我想要把他改为跟踪黑 {MOD}目标,请各位帮帮忙,谢谢大家

2019-07-17 13:03发布

本帖最后由 hahalm 于 2017-7-13 16:07 编辑

tinghei SC, Microsoft YaHei, arial, 宋体, sans-serif, tahoma">     大佬们,下面是一个基于matlab的红 {MOD}跟踪程序,它可以实时跟踪摄像头获取视频中的红 {MOD}部分,可是我想把它改为可以实时跟踪摄像头获取视频中的黑 {MOD}部分,注意是黑 {MOD}部分,要怎么修改啊,我刚学MATLAB,对于运动目标的检测还不熟悉,希望大家可以帮帮忙,积分也不多,我是诚心提问的,谢谢大家了!!!a = imaqhwinfo;%[camera_name, camera_id, format] = getCameraInfo(a);

% 为捕获的视频帧的视频输入功能%必须替换分辨率&安装的适配器名称。vid = videoinput('winvideo',1,'YUY2_320x240');
% 设置视频对象的属性
set(vid, 'FramesPerTrigger', Inf);set(vid, 'ReturnedColorspace', 'rgb')vid.FrameGrabInterval = 5;
%启动视频采集在这里
start(vid)
% 设置一个循环,在100帧的采集站
while(vid.FramesAcquired<=200)       
% 获取当前帧的快照   
data = getsnapshot(vid);       
% 现在实时跟踪红 {MOD}物体   
%我们必须减去红 {MOD}分量。   
%从灰度图像中提取图像中的红 {MOD}组件。   
diff_im = imsubtract(data(:,:,3), rgb2gray(data));   
%使用中值滤波器滤除噪声   
diff_im = medfilt2(diff_im, [3 3]);   
% 将生成的灰度图像转换为二进制图像。   
diff_im = im2bw(diff_im,0.18);       
% 将这些像素小于300px   
diff_im = bwareaopen(diff_im,300);       
% 标记图像中所有连接的组件。   
bw = bwlabel(diff_im, 8);   
%这里我们做图像斑点分析。   
%,我们为每个标记区域获取一组属性。   
stats = regionprops(bw, 'BoundingBox', 'Centroid');       
% 显示图像   
imshow(data)       
hold on       
%这是一个将矩形框中的红 {MOD}物体绑定的循环。   
for object = 1:length(stats)        
             bb = stats(object).BoundingBox;      
           bc = stats(object).Centroid;        
       rectangle('Position',bb,'EdgeColor','r','LineWidth',2)      
           plot(bc(1),bc(2), '-m+')        
       a=text(bc(1)+15,bc(2), strcat('X: ', num2str(round(bc(1))), '    Y: ', num2str(round(bc(2)))));        set(a, 'FontName', 'Arial', 'FontWeight', 'bold', 'FontSize', 12, 'Color', 'yellow');   
end       
hold offend
% 两个环路都在这里结束。
% 停止视频采集。
stop(vid);
%刷新存储在内存缓冲区中的所有图像数据。
flushdata(vid);
%清除所有的变量
clear allsprintf('%s','That was all about Image tracking, Guess that was pretty easy :) ')


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。