如果一幅图中只有一小部分图像你感兴趣(你想研究的部分),那么截图工具就可以了,但是如果你想知道这个区域在原图像中的坐标位置呢? 这可是截图工具所办不到的,前段时间我就需要这个功能,于是将其用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)
这里的结果是带小数点的,我需要整数的坐标,使用代码进行截图后是整数刚好是整数的,估计跟图像的格式有关?
转载自 祥的博客
原文链接:http://blog.csdn.net/humanking7/article/details/46822349