人头标注工具Matlab

概述

标注人头中心点位置,开发环境为Matlab,生成.mat文件格式,支持删除误标点,快捷按钮跳到下一张图片。

效果图

在这里插入图片描述

代码实现

对图片上某个点进行标注
clear all
close all
clc
set(gcf,'color','white')%图片的背景设置为白色
src='';
for i=1:240   %根据图片张数进行修改
    num = i;
    strshow=['the value of num=' num2str(num)];
    disp(strshow);
    str = '.jpg' ;
    Mstr='.mat';
    filestr='C:\Users\Alvin\Desktop\img10\';
    refilestr='C:\Users\Alvin\Desktop\11-9\img\';
    labelstr='C:\Users\Alvin\Desktop\11-9\label\';
    left_par='air(';
    Mark='mark';
    right_par=')';
    STR = sprintf('%s%d%s', filestr,num , str) ;
    RSTR=sprintf('%s%d%s', refilestr,num , str) ;
    MSTR=sprintf('%s%d%s', labelstr,num , Mstr) ;
   % MarkSTR=sprintf('%s%d%s', refilestr,Mark,num , Mstr) ;
    pic_source=imread(STR); 
    pic=imresize(pic_source,[544,960]);%调整图像的大小,
    showpic=imshow(pic);

    image_info = [0,0];%用于存储标记点
    while(1)
        [x1,y1]=ginput(1);
         x1=fix(x1) ;
         y1=fix(y1) ;
        Atemp=[x1,y1];
        image_info = [image_info;Atemp];
        hold on
        plot(x1,y1,'r+');
        
        % Q键逐步撤销之前标注的点
        if strcmpi(get(gcf,'CurrentCharacter'),'q')
            if size(image_info,1)>0
                image_info(size(image_info,1),:)=[];%非回车会以鼠标当前点做一次存储,这是多余的,删除
            end
            %重新做图
            close all
            showpic=imshow(pic);
            if size(image_info,1) >0
                image_info(size(image_info,1),:)=[];
                for j = 1:size(image_info,1)
                    hold on
                    plot(image_info(j,1),image_info(j,2),'r+');
                end
            end
        end  
        
        %回车键结束本次图片标定
        if strcmpi(get(gcf,'CurrentCharacter'),char(13))
            break;
        end
        
    end
    image_info(1,:)=[];%删除第一行多余的0
    if isempty(image_info)
    else
        save(MSTR,'image_info');   
        imwrite(pic,RSTR);%实际修改本地的图片  
    end
    close all
end
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值