《玩儿起来吧》MATLAB 实时图像处理(五)引体计数器

《玩儿起来吧》MATLAB 实时图像处理(五)引体计数器

用MATLAB实现的运动计数器。大家学了图像处理之后,是不是就想学以致用。而要用于生活中,最好的方式就是和摄像头搭配,实现实时图像处理。今天就给大家分享MATLAB实时图像处理的基础方法,希望能帮你快速入门。

by 今天不飞了

在这里插入图片描述


视频教学地址

《玩儿起来吧》MATLAB实时图像处理(五)引体计数器


代码

核心函数findpeaks()


function SportCount()

%% 创建GUI
Fig = figure('Position',[500,450,980,500]);

Pnl1 = uipanel(Fig,'Position',[0.05,0.17,0.9,0.8]);
Pnl2 = uipanel(Fig,'Position',[0.05,0.05,0.9,0.1]);

Axes1 = axes(Pnl1,'Position',[0,0,1/2,1]);
Axes2 = axes(Pnl1,'Position',[1/2,0,1/2,1]);

Bt = uicontrol(Pnl2,'style','togglebutton','String','锁定目标并开始计数','Fontsize',16,...
    'Units','normalized','Position',[0,0,0.5,1],'Callback',@LockTarget);
Txt = uicontrol(Pnl2,'style','text','String',[],'Fontsize',16,...
    'Units','normalized','Position',[0.5,0,0.5,1]);
drawnow

%% 开启摄像头
Hcamera = [];
Hobj = [];
if isempty(Hcamera)
    Hobj = videoinput('winvideo',1,'MJPG_640x480');
    Hcamera = preview(Hobj);
    frame = getsnapshot(Hobj);  % 获取帧
end

%% 初始化参数
flag = 0;
tracker = vision.PointTracker('MaxBidirectionalError',1);
gap = 1;
objectRegion = [0,0,0,0];
objFrame = [];
points = [];

% 初始化计数
rows = 0;
bodyPosition = [];
time = 0;
H = fspecial('average',[1,5]);
MPP = 100;
count = 0;

%% 开始
while 1
    if ishandle(Hcamera)
        % 获取影像
        frame = getsnapshot(Hobj);  % 获取帧
        if flag
            % 检测
            body(frame);
            imshow(frame,'Parent',Axes1)
        else
            % 普通显示
            imshow(frame,'Parent',Axes1)
        end
        drawnow
    else
        break
    end
end

    function LockTarget(~,~)
        bodyPosition = [];
        time = 0;
        count = 0;
        set(Txt,'String',num2str(count))
        % 降采样
        frame = frame(1:gap:end,1:gap:end,:);
        objFrame = frame;
        % 确定目标位置
        [x,y,~] = ginput(2);
        objectRegion = [min(x),min(y),max(x)-min(x),max(y)-min(y)]/gap;
        % 检测特征点
        points = detectMinEigenFeatures(rgb2gray(frame),'ROI',objectRegion);        
        % 初始化跟踪器
        release(tracker)
        initialize(tracker, points.Location, frame);
        flag = 1;
        rows = size(frame,1);
        bodyPosition = ones(1,30*3600)*(rows-mean(points.Location(:,2),1));        
    end

    function body(frame)
        % 降采样
        frame = frame(1:gap:end,1:gap:end,:);
        % 追踪
        [point,validity] = tracker(frame);
        point = point(validity,:);
        % 更新目标
        if size(point,1)<10
            release(tracker)
            initialize(tracker, points.Location, objFrame);
            [point,validity] = tracker(frame);
            point = point(validity,:);
        end
        % 反算坐标
        point = point*gap;
        
        time = time+1;
        bodyPosition(time) = rows-mean(point(:,2),1);
        tmp = imfilter(bodyPosition(1:time+10),H,'replicate','same');
        [pks, locs] = findpeaks(tmp, 'MinPeakProminence', MPP); 
        count = length(pks);
        
        % 显示
        plot(Axes2,tmp,'b-')
        hold(Axes2,'on')
        plot(Axes2,locs,pks,'r<')
        hold(Axes2,'off')
        axis(Axes2,[0,time+30,0,rows])
        set(Txt,'String',num2str(count))
    end

end

其他

  1. 欢迎大家自行修改为“自动定位人物并开始计数”。
  2. MATLAB建议2018及以上版本。
  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 结婚的小游戏有很多种,以下是一些可以玩的小游戏: 1. 谁更了解新郎/新娘:在游戏中,新郎/新娘会回答一些问题,例如最喜欢的食物、最爱的电影等,然后参加游戏的人会猜测新郎/新娘的答案,看谁猜得最准。 2. 新婚猜谜:这个游戏需要准备一些有关新婚的谜语,让参加游戏的人猜测答案。 3. 找出新娘的鞋子:在婚礼上,新娘通常会穿上一双特别的婚鞋,游戏中会将其藏起来,然后参加游戏的人需要找出新娘的鞋子,找到的人会获得奖励。 4. 谁抛的花束最远:在这个游戏中,新娘会抛出她的花束,然后参加游戏的单身女性会尽可能远地抓住花束,抓到花束的人会成为下一个结婚的新娘。 5. 猜婚礼歌曲:在这个游戏中,会播放一些与婚礼相关的歌曲,参加游戏的人需要猜出这些歌曲的名称或歌手。 ### 回答2: 结婚是一段充满喜悦和甜蜜的时刻,为了增添婚礼的欢乐氛围,可以进行一些有趣的小游戏。以下是一些结婚小游戏的建议: 1. 猜新娘:新郎闭上眼睛,由新娘和一些女性嘉宾站在一起,新郎需要摸出新娘,以测试他对新娘的认识。 2. 装扮新娘:将新娘的婚纱分成若干块,要求新郎将这些块组装回来,以检验他的耐心和对新娘外貌的记忆。 3. 感情真假:为每对新婚夫妇准备一些问题,让新郎和新娘轮流回答。问题可以涉及他们的未来计划、感情故事等,以检验他们对彼此了解的程度。 4. 隔空传情:准备一些纸板,新郎和新娘分别站在一段距离的两端,各自用嘴巴夹住纸板,然后通过用纸板传送信件或者吻信,以增加互动和竞争的乐趣。 5. 拍拖大作战:请一些单身朋友参与比赛,让他们模仿新郎和新娘的甜蜜动作或场景,由新郎和新娘评选最像的一对。 6. 献花传情:要求嘉宾们分成两队,每队选出一名代表,站在一段距离的两端。每名代表手持一朵花束,通过传递花束的方式,以最快的速度将花束传至对方代表手中。 这些小游戏旨在加强新郎和新娘之间的默契和互动,同时给婚礼增添欢乐和独特的回忆。 ### 回答3: 结婚的小游戏有很多种,可以根据新娘和新郎的喜好、婚礼主题以及场地条件来选择。以下是一些常见的结婚小游戏: 1. 猜新娘或新郎的年龄、生肖、星座等:在婚宴上,主持人可以播放照片或简短视频,让宾客猜测新娘或新郎的基本信息,这样可以增加互动和欢乐氛围。 2. 问题游戏:新娘和新郎事先准备一些问题,让宾客回答,例如他们相识的地点、第一次约会的情景等等。这是一个有趣的互动环节,使宾客更了解新人的爱情故事。 3. 婚戒传递游戏:将新娘和新郎的婚戒放在一系列纸杯或袋子中,宾客之间传递婚戒,最后由新郎把婚戒套在新娘的手指上。这是一个欢乐的游戏,可以增加气氛。 4. 玩转绳的游戏:让新郎和新娘手持一根绳子,游戏主持人念出一些有关新婚生活的情景,两人根据情景变化来调整绳子的形状。这个游戏考验新人的默契和协作能力。 5. 尬聊游戏:在宾客席上放置一些聊天题,例如“最难忘的一次旅行”、“最喜欢的一本书”等,让宾客自由交流。这样可以拉近宾客之间的距离,增加互动氛围。 总的来说,结婚的小游戏可以通过增加互动和娱乐性,使宾客更好地融入婚礼,与新人共享喜庆的氛围。当然还可以根据实际情况发挥创意,设计出更多有趣的结婚小游戏,以让婚礼更加精彩难忘。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值