我想了解如何imfindcircles
的作品,所以我創建了一個簡單的圖像黑色背景和一個白色圓圈。該圖像是640×480和圓的直徑爲122個像素:Matlab:無法找到一個圈imphindcircles
我試圖用imfindcircles
來檢測圓,我試圖圖像的各種模式,如uint8
RGB,uint8
灰度,double
灰度和反轉圖像,以所有這些形式,以及minR
和maxR
的各種值。我沒有結果在所有情況下:
minR = 40;
maxR = 80;
Irgb = imread('example_circle.png');
Irgbr = 255 - Irgb;
I = rgb2gray(Irgb);
Ir = 255 - I;
Id = double(I)/255;
Ird = 1 - Id;
[c1,r1] = imfindcircles(I,[minR maxR]);
[c2,r2] = imfindcircles(Ir,[minR maxR]);
[c3,r3] = imfindcircles(Id,[minR maxR]);
[c4,r4] = imfindcircles(Ird,[minR maxR]);
[c5,r5] = imfindcircles(Irgb,[minR maxR]);
[c6,r6] = imfindcircles(Irgbr,[minR maxR]);
disp([length(r1) length(r2) length(r3) length(r4) length(r5) length(r6)]);
輸出是:
0 0 0 0 0 0
我怎麼使用函數來查找圈?
二進制輸入通常會給出最好的結果,但基於文檔它也應該適用於灰度和RGB圖像。使用二進制圖像:'[c1,r1] = imfindcircles(I> 128,[minR maxR]);' – m7913d
您可能會在[以前的文章]中找到更多信息(https://stackoverflow.com/search?q=%5Bmatlab %5D + imfindcircles) – m7913d
@ m7913d,它適用於二進制圖像,但不適用於反轉二進制圖像(黑色圓圈,白色背景),但我無法使用二進制圖像,我需要在另一個程序中使用該函數具有更復雜的圖像。 – SIMEL