Main Content

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

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

此示例演示如何使用 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 Channel。将 channelID 更改为您的通道ID,并使用 writeAPIKey 指定您自己通道的写入 API 密钥。

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

另请参阅

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

相关主题