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