我检测到一个圆圈,如下所示:
稍后我想检测检测到的标志中的速度限制,如何将其裁剪掉,以便留下如下图像?
当程序完成时,它会显示中心的位置和终端的半径。
centers =
248.4873 170.4811
radii =
24.5024
我知道如何使用imcrop
但是我如何使用返回的值而不是自己写入它们,因为可能检测到超过1个圆圈?
代码:
I = imread('p1.tif');
subplot(3,3,1); imshow(I); title('Original Image');
%sharpen edges
B = imsharpen(I);
subplot(3,3,2); imshow(B); title('sharpened edges');
%find circles
Img = im2bw(B(:,:,3));
minRad = 20;
maxRad = 90;
[centers, radii] = imfindcircles(Img, [minRad maxRad], ...
'ObjectPolarity','bright','sensitivity',0.87)
imagesc(Img);
viscircles(centers, radii,'Color','green');
答案 0 :(得分:2)
假设你有一个中心和一个半径。这应该这样做
rect = [centers(1)-radii,centers(2)-radii,2*radii,2*radii]
I2 = imcrop(I,rect)
对于多个圆圈,您可以为循环中返回的每个圆圈执行此过程。