如何获取位置和放置一个标记(矩形或椭圆形)形象吗?
14日视图(30天)
显示旧的评论
接受的答案
图像分析
2019年6月11日
试试这个:
clc;%清除命令窗口。
关闭所有;%关闭所有数据(除了imtool。)
清晰;%擦掉所有现有的变量。或者clearvars如果你想要的。
工作空间;%确定工作区面板显示。
格式长g;
格式紧凑的;
字形大小= 15;
% = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
%在灰度图像演示。
文件夹= pwd;
baseFileName =“image.jpeg”;
%得到完整的文件名,路径前缀。
fullFileName = fullfile(文件夹,baseFileName);
%检查文件是否存在。
如果~存在(fullFileName“文件”)
%的文件不存在,没有找到它在该文件夹。
%检查整个搜索路径(其他文件夹)去掉文件的文件夹。
fullFileNameOnSearchPath = baseFileName;%没有路径。
如果~存在(fullFileNameOnSearchPath“文件”)
%仍然没有找到它。提醒用户。
errorMessage = sprintf (的错误:% s在搜索路径的文件夹不存在。,fullFileName);
uiwait (warndlg (errorMessage));
返回;
结束
结束
rgbImage = imread (fullFileName);
%显示图像。
次要情节(2、3、1);
imshow (rgbImage []);
标题(的原始灰度图像,“字形大小”字形大小,“翻译”,“没有”);
轴(“上”,“图像”);
惠普= impixelinfo ();
%得到图像的尺寸。
% numberOfColorChannels应该为灰度图像,= 1和3的RGB彩色图像。
(行、列,numberOfColorChannels) =大小(rgbImage)
如果numberOfColorChannels > 1
%这不是灰度像我们预期的颜色。
%使用加权和的渠道来创建一个灰度图像。
% grayImage = rgb2gray (rgbImage);
%替代方法:把它转换成灰度只通过绿色通道,
%,在一个典型的快照将噪声信道。
grayImage = rgbImage (:: 2);%绿色通道。
其他的
grayImage = rgbImage;%已经灰度。
结束
%的灰度范围从0到255。
%显示图像的直方图。
次要情节(2、3、2);
imhist (grayImage);
网格在;
标题(图像的直方图,“字形大小”字形大小,“翻译”,“没有”);
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
%设置图属性:
%全屏放大图。
集(gcf,“单位”,“归一化”,“OuterPosition”,(0、0.04、1、0.96));
%去掉工具栏和下拉菜单的图。
%设置(gcf“工具栏”,“没有”,“菜单”,“没有一个”);
%的标题栏提供一个名称。
集(gcf,“名字”,“由ImageAnalyst演示”,“NumberTitle”,“关闭”)
drawnow;
% Binarize图像
binaryImage = grayImage < 82;
%提取最大只有两个团。这需要主要的和忽视小斑点噪声。
binaryImage = bwareafilt (binaryImage 2);
%显示图像。
次要情节(2、3、3);
imshow (binaryImage []);
标题(“两大团”,“字形大小”字形大小,“翻译”,“没有”);
轴(“上”,“图像”);
%的标签我们可以采取最右边的一个形象。
labeledImage = bwlabel (binaryImage);
%采取正确的一个。它将有标签2。
binaryImage = labeledImage = = 2;
%填补
binaryImage = imfill (binaryImage,“黑洞”);
%显示图像。
次要情节(2、3、4);
imshow (binaryImage []);
标题(“右边的团”,“字形大小”字形大小,“翻译”,“没有”);
轴(“上”,“图像”);
%使用它为零的其他部分的形象。
grayImage (~ binaryImage) = 0;
%显示图像。
次要情节(2、3、5);
imshow (grayImage []);
标题(“蒙面灰度图像”,“字形大小”字形大小,“翻译”,“没有”);
轴(“上”,“图像”);
惠普= impixelinfo ();
%得到一个新的二进制映像的信件
lettersMask = grayImage > 86;
%填补
lettersMask = imfill (lettersMask,“黑洞”);
%将最大团。
lettersMask = bwareafilt (lettersMask, 1);
%将凸包
lettersMask = bwconvhull (lettersMask);
%显示图像。
次要情节(2、3、6);
imshow (lettersMask []);
标题(“蒙面灰度图像”,“字形大小”字形大小,“翻译”,“没有”);
轴(“上”,“图像”);
惠普= impixelinfo ();
%测量气泡
道具= regionprops (lettersMask,“重心”,的边界框(“大小));
xy = props.Centroid
%的红十字会把重心。
持有在;
情节(xy (1), (2),' r + ',“MarkerSize”30岁的“线宽”2);
%边界框。
矩形(“位置”props.BoundingBox,“EdgeColor”,“r”,“线宽”2);
%更新标题
标题= sprintf (的重心在x(列)= %。1 f, y(行)= % .1f 'xy xy (1), (2));
标题(标题,“字形大小”字形大小,“翻译”,“没有”);