检测并测量图像中的圆形物体
此示例展示如何从网站读取图像并使用 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);
另请参阅
imshow
(MATLAB) | imresize
(MATLAB) | imfindcircles
(Image Processing Toolbox)
主题
- Image Processing Toolbox 快速入门 (Image Processing Toolbox)