[图像]获取图片中感兴趣区域的信息(Matlab实现)

    科技2022-07-13  107

    内容提要

    如果一幅图中只有一小部分图像你感兴趣(你想研究的部分),那么截图工具就可以了,但是如果你想知道这个区域在原图像中的坐标位置呢? 这可是截图工具所办不到的,前段时间我就需要这个功能,于是将其用Matlab实现。

    其实只要用到Matlab中的两个函数:

    函数: imrect函数: getPosition

    如果要截取其中的部分图像,就离不开下面的函数:

    函数: imcrop

    代码实现

    clc; clear; close all; %---------------------------------------- % Matlab截图程序 %---------------------------------------- [filename, pathname] = uigetfile({'*.jpg'; '*.bmp'; '*.gif'; '*.png' }, '选择图片'); %没有图像 if filename == 0 return; end src = imread([pathname, filename]); [m, n, z] = size(src); figure(1) imshow(src)%显示原图像 %---------------------------------------- %画图后: h=imrect;%鼠标变成十字,用来选取感兴趣区域 %---------------------------------------- %图中就会出现可以拖动以及改变大小的矩形框,选好位置后: %---------------------------------------- pos=getPosition(h); %---------------------------------------- %pos有四个值,分别是矩形框的左下角点的坐标 x y 和 框的 宽度和高度 %---------------------------------------- %---------------------------------------- %拷贝选取图片 %---------------------------------------- imCp = imcrop( src, pos ); figure(2) imshow(imCp);

    效果展示

    图中的区域信息为:

    pos = 255.8263 65.1737 87.5789 87.5789 % x y dx dy %左上角点(x,y), 区域长宽(dx,dy)

    不要忘了图像坐标系的x和y的方向

    改进版:

    clc; clear; close all; %---------------------------------------- % Matlab截图程序 %---------------------------------------- [filename, pathname] = uigetfile({'*.jpg'; '*.bmp'; '*.gif'; '*.png' }, '选择图片'); %没有图像 if filename == 0 return; end src = imread([pathname, filename]); [m, n, z] = size(src); figure(1) imshow(src)%显示原图像 %---------------------------------------- [regionI,rect] = imcrop(src); figure imshow(regionI); regionImax = imcrop( src, rect ); figure; imshow(regionImax);

     

    Processed: 0.011, SQL: 8