你好,我有两个圆图像同心,我使用一个命令(x, y) = ginput (1)。使用鼠标点击一个同心圆,参照(x, y)点如何找出内在dia,外dia,中心
2视图(30天)
显示旧的评论
能画一个圆,参照的{(x, y) = ginput(1)}单点。
接受的答案
图像分析
2012年12月28日
下面是如何做ginput(1),而不是自动的,就像你要求:
clc;%清除命令窗口。
关闭所有;%关闭所有数据(除了imtool。)
imtool关闭所有;%关闭所有imtool数字图像处理工具箱。
清晰;%擦掉所有现有的变量。或者clearvars如果你想要的。
工作空间;%确定工作区面板显示。
格式长g;
格式紧凑的;
字形大小= 20;
imshow (“C: \ \ Naresh \ \ \ intq.png临时文件的用户);
使用ginput %要求中心(1)
消息= sprintf (“请点击圆圈的中心”);
按钮= questdlg(消息,“继续?”,“好吧”,“退出”,“好吧”);
drawnow;%刷新屏幕上残余的对话框。
如果strcmpi(按钮,“退出”)
返回;
结束
[xCenter, yCenter] = ginput (1)
持有在;
markerSize = 30;%的十字架。
线宽= 2;%厚度的十字架。
情节(xCenter yCenter,' r + ',“MarkerSIze”markerSize,“线宽”、线宽);
%要求内部边缘使用ginput (1)
消息= sprintf (内部边缘的“请点击圆圈的);
按钮= questdlg(消息,“继续?”,“好吧”,“退出”,“好吧”);
drawnow;%刷新屏幕上残余的对话框。
如果strcmpi(按钮,“退出”)
返回;
结束
(鑫,阴)= ginput (1)
%画一个十字架在点击的地步。
情节(鑫,阴,' r + ',“MarkerSIze”markerSize,“线宽”、线宽);
%画一条线。
线([xCenter,鑫],[yCenter,阴),“颜色”,“b”,“线宽”、线宽);
%计算直径:
内径=√(xInner-xCenter) ^ 2 + (yInner-yCenter) ^ 2)
%要求使用ginput外缘(1)
消息= sprintf (的内径= %。2 f \ n \ nPlease点击外缘的外圆”、内径);
按钮= questdlg(消息,“继续?”,“好吧”,“退出”,“好吧”);
drawnow;%刷新屏幕上残余的对话框。
如果strcmpi(按钮,“退出”)
返回;
结束
[xOuter,你]= ginput (1)
情节(xOuter,你,' r + ',“MarkerSIze”markerSize,“线宽”、线宽);
%画一条线。
线([xCenter xOuter], [yCenter,你),“颜色”,“b”,“线宽”、线宽);
%计算直径:
outerDiameter =√(xOuter-xCenter) ^ 2 + (yOuter-yCenter) ^ 2)
内径=√(xInner-xCenter) ^ 2 + (yInner-yCenter) ^ 2)
消息= sprintf (的外直径= %。2 f \ nThe内径= % .2f ',…
outerDiameter,内径);
uiwait (helpdlg(消息));
2的评论
图像分析
2021年4月11日
是的
(鑫,阴)= ginput (1);
行=圆(阴);%确保它是一个整数,而不是一个分数值。
列=圆(新);
pixelValue = yourImage(行、列,:)
更多的答案(3)
沃尔特·罗伯森
2012年12月25日
所涉及的问题,你发邮件给我找到内外圈直径在一个“靶心”类型模式,并想知道如何找到一个圆的直径指出使用ginput ()
我建议你找到所有的内外直径,然后担心输出。
发现直径,通过阈值图像用“<”,这样你得到“真正”的黑暗区域。然后bwlabel()的二进制图像结果。regionprops(),请求EquivDiameter和FilledArea的面积。外径EquivDiameter会给你。√(区域- FilledArea) / pi)的内径,0是最里面的圆。排序EquivDiameter圈的顺序。
如果你仍然希望用户能够点击选择一个特定的点,然后点击后,提取同一点的标记图像,和标签会告诉你regionprops结果的数组索引。