主要内容

本页采用了机器翻译。点击此处可查看英文原文。

检测并测量图像中的圆形物体

此示例展示如何从网站读取图像并使用 ThingSpeak™ 和 Image Processing Toolbox™ 计算图像中圆形物体的数量。计算值存储在 ThingSpeak 通道中。

从 URL 读取图像

使用 webread 从公共 URL 导入图像。图像文件包含大量数据,您只需要图像数据的子集即可计算硬币。为了缩短处理时间,您可以调整图像大小。使用 imresize 将图像剪切为原始大小的 30%。

rgb = webread('https://www.publicdomainpictures.net/pictures/40000/velka/british-coins.jpg');
rgb = imresize(rgb, 0.3);
imshow(rgb)

调整灵敏度设置并计数圈数

除了需要检测多个圆圈之外,图像还包含不同颜色的硬币,这些硬币与背景具有不同的对比度。黄铜色的硬币与此背景形成强烈的对比。银币的颜色与背景颜色更加接近。使用 imfindcircles 来计算硬币。

1.默认情况下,imfindcircles 会查找比背景更亮的圆形物体。将其参数 'ObjectPolarity' 设置为 'dark' 来搜索黑眼圈。

2.函数 imfindcircles 有一个参数 'Sensitivity',您可以使用它在查找圆形物体时控制内部阈值。将 'Sensitivity'' 设置为 0.92。

3.在该图像上调用 imfindcircles,搜索半径为 [80 130] 像素。中心矢量的长度等于找到的圆的数量。

[centers, radii] = imfindcircles(rgb,[80 130],'ObjectPolarity','dark','Sensitivity',0.92);

numCircles = length(centers)
numCircles =

     5

将结果存储在 ThingSpeak 通道中

您可以使用此示例和 ThingSpeak 通道存储和跟踪动态图像的内容。将圆圈的数量写入由 channelID 指定的 ThingSpeak 通道。将 channelID 更改为您的通道 ID,并使用 writeAPIKey 为您自己的通道指定写入 API 密钥。

channelID=17504;
writeAPIKey='23ZLGOBBU9TWHG2H';
thingSpeakWrite(channelID, numCircles, 'Writekey', writeAPIKey);

另请参阅

(MATLAB) | (MATLAB) | (Image Processing Toolbox)

主题