如何获取位置和放置一个标记(矩形或椭圆形)形象吗?

14日视图(30天)
怎么只有白色像素值的位置,把一个标记(矩形或椭圆形)附加图片。搜索时,我发现这个链接 https://in.mathworks.com/matlabcentral/answers/110230-drawing-a-rectangle-on-top-of-an-image 。但是我得自动位置。你能帮我吗?
参考图片。场的图像我用边缘算子。
I = imread (“im.jpg”);
E1 =边缘(我,Sobel);
imshowpair (E1,我“蒙太奇”)

接受的答案

图像分析
图像分析 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));
标题(标题,“字形大小”字形大小,“翻译”,“没有”);
0000年Screenshot.png
4评论
恋人K
恋人K 2019年8月21日
需要一些改变。要求最终的输出。其他一切都好。比你。

登录置评。

答案(1)

图像分析
图像分析 2019年6月11日
阈值,发现背景。
调用bwareafilt()的第二大团。
掩盖一切为零,然后阈值再次找到字符,最后调用regionprops()和质心的问。连接尝试代码如果你不能完成它。
1评论
恋人K
恋人K 2019年6月11日
我试过,但我没有得到。我不清楚。困惑。
这段代码手动工作位置标记。
我= imread (“im.jpg”);
E1 =边缘(我“索贝尔”);
imshowpair (E1,我“蒙太奇”)
持有;轴;
矩形(“位置”(100400235、90),
“弯曲”[0.8,0.4],
“EdgeColor”,“r”,
“线宽”3,
“线型”,“- - -”)
正如你所说我尝试这个,
BW2 = bwareafilt (E1, 5);
BW2 imshowpair (E1,“蒙太奇”)
s = regionprops (BW2“重心”);
质心=猫(1、s.Centroid);
我没有得到。还阈值限制我也不明白为什么。

登录置评。

标签

下载188bet金宝搏

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!