Blob分析案例(硬币检测) 本案例是对硬币进行识别,使用halcon。实现的效果和代码如下。
1 效果 【计算机视觉|Blob分析案例(硬币检测)】经过灰度化后的图像,如图所示:
文章图片
经过Blob分析,最终得到的结果如下图所示,能够很好的找到硬币所在的区域,并获取面积和坐标,这个是针对像素点的面积。
文章图片
2 代码实现
* 案例:硬币识别
* 连接相机
open_framegrabber ('DirectShow', 1, 1, 0, 0, 0, 0, 'default', 8, 'gray', -1, 'false', 'default', '[0] USB2.0 PC CAMERA', 0, -1, AcqHandle)
* 开启相机
grab_image_start (AcqHandle, -1)* 关闭窗口
dev_close_window ()
* 打开窗口
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
while (true)
* 抓取图像
grab_image_async (Image, AcqHandle, -1)
* 预处理,中值滤波
median_image (Image, ImageMedian, 'circle', 1, 'mirrored')
* 二值化
threshold (Image, Regions, 144, 254)
* 二值化以后,得出来的结果会噪点,使用形态学把噪点去掉
* 因为硬币是圆形的,所以使用圆形结构元素进行处理,所以结构元素的半径越大,
* 开运算去掉的强度越强,也可以使用腐蚀,但是腐蚀去掉像素点的强度比开运算强
opening_circle (Regions, RegionOpening, 6)
* 经过处理后用孔洞,需要进行填充
fill_up (RegionOpening, RegionFillUp)
* 切分成不同的连通区域
connection (RegionFillUp, ConnectedRegions)
* 打开特征直方图工具进行特征选取,对于硬币的选取,只需要使用圆度和面积就可以把硬币选出
select_shape (ConnectedRegions, SelectedRegions, ['area','circularity'], 'and', [6977.74,0.40497], [50000,1])
* 面积和坐标
area_center (SelectedRegions, Area, Row, Column)
* 显示
disp_message (WindowHandle, '面积: ' + Area + '坐标:(' + Row + ',' + Column + ')', 'window', Row-150, Column-150, 'black', 'true')
endwhile
* 关相机
close_framegrabber (AcqHandle)
推荐阅读
- 人脸识别|【人脸识别系列】| 实现自动化妆
- 人工智能|干货!人体姿态估计与运动预测
- 推荐系统论文进阶|CTR预估 论文精读(十一)--Deep Interest Evolution Network(DIEN)
- Python专栏|数据分析的常规流程
- 历史上的今天|【历史上的今天】2 月 16 日(世界上第一个 BBS 诞生;中国计算机教育开端;IBM 机器人赢得智能竞赛)
- 前沿论文|论文精读(Neural Architecture Search without Training)
- 网络|一文彻底搞懂前端监控
- 游戏|2022年如何学习前端前沿技术,破卷而出()