matlab通过鼠标选取数据


前言

matlab利用鼠标进行目标区域选择
虽然使用matlab已经很多年了,但是如果一些知识不用,就容易被遗忘,老话说的好,好记性不如烂笔头。当然matlab用鼠标选择目标区域的方法有很多种,这里记录一些,以后遇到更好的再来补充。

1、使用imrect()函数

% ------------------
%        Matlab手动鼠标截图,获取兴趣区域
% ------------------
clc;
clear;
close all;
% 打开一个图片选择的界面,返回的是你需要的图片名字和地址
[filename, pathname] = uigetfile({
    
    '*.jpg'; '*.bmp'; '*.gif'; '*.png'},'选择图片');
% 没有图像
if filename == 0
    return;
end

origin_img = imread([pathname,filename]);
figure(1);
imshow(origin_img);

% 画图后,将鼠标变成十字架,用来选择兴趣区域
h = imrect;
position = getPosition(h);% 拖动鼠标获得兴趣区域,pos有四个值,兴趣区域左上角的像素坐标和区域的长宽
roi = imcrop(origin_img,position);
figure(2);
imshow(roi);
imwrite(roi,'roi.jpg');


2、使用ginput()函数

% ------------------
%        Matlab手动鼠标截图,获取兴趣区域
% ------------------

clc;
clear;
close all;
% 打开一个图片选择的界面,返回的是你需要的图片名字和地址
[filename, pathname] = uigetfile({
    
    '*.jpg'; '*.bmp'; '*.gif'; '*.png'},'选择图片');
% 没有图像
if filename == 0
    return;
end

origin_img = imread([pathname,filename]);
figure(1);
imshow(origin_img);

% 使用ginput(n)函数,获取鼠标点击的n个点的像素坐标,x保存横坐标向量,y保存纵坐标向量
[x,y] = ginput(4);% 获取四个点的像素坐标
x_min = min(x);
x_max = max(x);
y_min = min(y);
y_max = max(y);
width = x_max-x_min;
height = y_max-y_min;
position = [x_min,y_min,width,height];
roi = imcrop(origin_img,position);
figure(2)
imshow(roi);
imwrite(roi,'roi.jpg');

重点参考:https://blog.csdn.net/sinat_41328554/article/details/101999166

总结

其中通过鼠标点击获取坐标反馈是非常有用的,不仅可以用于二维矩阵的选通,也可以稍加改进用于一维数据的选通,这将很大程度方便数据处理的进程。

猜你喜欢

转载自blog.csdn.net/code_Joe123/article/details/124681061