电压表检测说明

关于仪表检测,最好用彩色相机进行检测,考虑表盘的复杂性,且表盘指针一般为彩色指针,用黑白相机直接拍摄的时候指针不容易与表盘区分,如果为彩色相机,通过彩色通道,很容易将指针和刻度更好更容易的识别出来。

关于仪表的识别还要注意打光的角度,有些玻璃表盘打上光以后会有反光的现象。根据不同的表对反光的适应性,选择合适的光源。

1、计算刻度的位置,先筛选出刻度的位置,然后再进一步精确计算。因为刻度有一定的宽度,筛选出刻度所在的矩形,计算矩形的中心线。

2、然后绘制直线,通过交点算子,再经过排序,计算出刻度的起始点和终点,计算出两点间的距离,即刻度的测量范围,计算像素与电压的比例值。

3、计算指针所在中线位置与长线交点的位置,计算此位置与第一个点的距离,然后距离值乘上比例值,即为得到的电压值。

检测结果如下图所示,计算的结果还是比较准确的。

上代码和原始图

dev_update_off ()
dev_close_window () * 读取图像
read_image (Image, '2')
dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)
gen_rectangle1 (ROI_0, 310.84, 854.863, 1028.37, 1209.44)
reduce_domain (Image, ROI_0, ImageReduced1)gen_rectangle1 (ROI_2, 367.028, 939.479, 957.554, 961.657)reduce_domain (ImageReduced1, ROI_2, ImageReduced2)
dev_display(ImageReduced1)
*筛选出刻度值
threshold (ImageReduced2, Regions, 159, 255)
connection (Regions, ConnectedRegions)
smallest_rectangle2 (ConnectedRegions, Row, Column, Phi, Length1, Length2)gen_rectangle2_contour_xld (Rectangle1, Row, Column, Phi, Length1, Length2)
dev_display(Rectangle1)stop()
dev_display(ImageReduced1)
*gen_rectangle2 (Rectangle, Row, Column, Phi, Length1, Length2)
sort_contours_xld (Rectangle1, SortedContours, 'lower_left', 'true', 'row')
count_obj(SortedContours,num)
row11:=[]
col11:=[]
row22:=[]
col22:=[]
stop()
ContourS:=[]
* ****************************************
*求rectangle2的中心线
* ****************************************
for i:=1 to num by 1select_obj (SortedContours, ObjectSelected,i)*row1:=Row[1]-(Length1[1])*sin(Phi[1])*row1:=[row1,Row[i-1]-(Length1[i-1])*sin(Phi[i-1])]*col1:=[col1,Column[i-1]+(Length1[i-1])*cos(Phi[i-1])]*row2:=[row2,Row[i-1]+(Length1[i-1])*sin(Phi[i-1])]*col2:=[col2,Column[i-1]-(Length1[i-1])*cos(Phi[i-1])]row1:=Row[i-1]-(Length1[i-1])*sin(Phi[i-1])col1:=Column[i-1]+(Length1[i-1])*cos(Phi[i-1])row2:=Row[i-1]+(Length1[i-1])*sin(Phi[i-1])col2:=Column[i-1]-(Length1[i-1])*cos(Phi[i-1])gen_contour_polygon_xld (Contour, [row1,row2], [col1,col2])dev_display(Contour)row11:=[row11,row1]col11:=[col11,col1]row22:=[row22,row2]col22:=[col22,col2]
endforstop()
gen_region_line(ROI_lines, row11, col11,row22,col22)
gen_region_line (ROI_long, 363.1, 951.1, 960.7, 948.7)*计算这两个区域的交集
intersection (ROI_lines, ROI_long, Reg_p_obj)
*交集的位置
area_center (Reg_p_obj, Area, Row2, Column2)
*计算第一个点和最后一个点之间的距离distance_pp (Row2[0], Column2[0], Row2[15], Column2[15], Distance)
*第一个点的位置
gen_cross_contour_xld (Cross, Row2[15], Column2[15], 16, 0.79)*计算指针的位置
dev_display(ImageReduced1)*gen_rectangle1 (ROI_xiao, 847.9, 881.5, 891.1, 970.3)
*tu1
*gen_rectangle1 (ROI_xiao, 574.3, 883.9, 600.7, 975.1)
*tu2
gen_rectangle1 (ROI_xiao, 492.7, 888.7, 516.7, 970.3)reduce_domain (ImageReduced1, ROI_xiao, ImageReduced3)
threshold (ImageReduced3, RegionsZhen, 147, 188)
connection (RegionsZhen, ConnectedRegions1)
select_shape (ConnectedRegions1, SelectedRegionsZhen, 'area', 'and', 150, 99999)
dev_display(ImageReduced1)
dev_display(SelectedRegionsZhen)
smallest_rectangle2 (SelectedRegionsZhen, Row13, Column13, Phi13, Length113, Length213)gen_rectangle2 (RectangleZhen,Row13, Column13, Phi13, Length113*3, 0.5)
*计算指针与线的交集位置
intersection (RectangleZhen, ROI_long, Reg_p_objZhen)
area_center (Reg_p_objZhen, Area, Row2d, Column2d) gen_cross_contour_xld (Crossd, Row2d, Column2d, 16, 0.79) *计算此点与第一个点的距离
distance_pp (Row2d, Column2d, Row2[15], Column2[15], Distance2)a:=Distance2*150/Distance* 表示 dev_clear_window () dev_display (Image) dev_set_line_width (2) dev_set_color ('red') dev_display (RectangleZhen) dev_set_color ('yellow') dev_display (Crossd) tuple_string (a, '.2f', str) set_tposition (WindowHandle, Row2d-40, Column2d-150) write_string (WindowHandle, str) stop ()disp_message (WindowHandle, '当前电压:'+str, 'window', 12, 12, 'red', 'false')

图1指针在70多

 图2指针在110多

图3指针在20多

仪表检测——电压表halcon相关推荐

  1. 如何开展工业视觉检测?Halcon 圣经告诉你答案

    点击我爱计算机视觉标星,更快获取CVML新技术 在工业产品视觉检测领域,Halcon 绝对是人尽皆知的存在.其众多且完整的技术方案和出众的计算性能,是高质量项目开发的保证(当然代价是付费). 上个月北 ...

  2. HALCON联合C#检测表面缺陷——HALCON例程autobahn

    前面的文章我们讨论了最基本的框架原理,大家如果想看哪一方面的知识可以留言,我在专栏中来说一说. 这段时间我打算分享一下HALCO的一系列例程.我们在检测中很多时候都无从下手,原因很简单我们积累的算子太 ...

  3. Opencv-python圆盘指针仪表检测

    文章目录 1. 问题和思路说明 2. 注意点 2.1 Opencv读取图片矩阵 rows cols以及height width的关系 2.2 opencv和numpy数组长宽对应的问题 2.3 结论 ...

  4. 污水流量计的四种连接方式及仪表检测的方法

    污水流量计的四种连接方式: 1.法兰连接:这是最常见.最传统的连接方式.一般来说,在生产过程中,流量计的两端安装有两个可以连接的法兰.在流量计与管道的连接处,两端法兰和管道上相同的两个法兰可以用螺栓牢 ...

  5. 模块化智能仪器仪表检测平台系统

    设备组成 Etest_CPS系统主要由硬件部分与软件部分组成.硬件部分由PCI机箱.PCI控制器以及各种PCI接口板卡组成.软件部分由测试设计软件模块.测试执行服务软件模块.测试执行客户端软件模块.设 ...

  6. Proteus添加仪表(电压表、电流表等)

    **在proteus软件界面左侧的工具栏中可以找到各种仪表.具体操作请参照以下步骤,演示软件版本为proteus 8.10 .** 1.首先在电脑上打开proteus软件,进入软件加载界面. 2.软件 ...

  7. 车流检测之halcon光流法算法实现

    * This example program shows how to use optical_flow_mg to compute the optical flow in an image sequ ...

  8. 变电站仪器仪表检测图像数据集

    数据集中,总共包含8307张图像及对应的VOC格式标签. 数据集下载链接: https://download.csdn.net/download/ncusz/85003005

  9. HALCON 21.11:深度学习笔记---对象检测, 实例分割(11)

    HALCON 21.11:深度学习笔记---对象检测, 实例分割(11) HALCON 21.11.0.0中,实现了深度学习方法. 本章介绍了如何使用基于深度学习的对象检测. 通过对象检测,我们希望在 ...

最新文章

  1. 微信小程序基于swiper组件的tab切换
  2. DFS 事件id 2104 2004 报错
  3. 用ssl.ca自制证书
  4. Ajax学习笔记-基础概述-1
  5. 新版 OPPO Enco Free 2 固件工具 (仅供交流学习使用)
  6. python 爬虫 中乱码问题0xb5 和b'\x1f\x8b\x08
  7. 2021年中国及各省市结婚登记人数、离婚登记人数、结婚率、离婚率、婚姻的正负面效应及政策建议分析[图]
  8. 应用MATLAB分析双色球历史数据
  9. qml+QQuickPaintedItem数学公式编辑器的实现
  10. re学习笔记(90)攻防世界 - mobile进阶区 - boomshakalaka-3
  11. uni-app开发的APP项目上线后,登录后自动检测更新,点击下载并安装,可手动检测版本更新,实现扫码下载功能
  12. Recon-ng的简单使用(recon-ng v5.1.1)
  13. uni-app - 苹果安卓系统监听物理返回按键(手机左滑返回监听)
  14. 【C++】cout、cerr、clog之间的区别
  15. Redis集群(读写分离、哨兵机制、Cluster集群)
  16. 活动目录备份|活动目录教程
  17. java写json数组字符串,Java将前端的json数组字符串转换为列表
  18. 人工智能机器人网站合集
  19. 严蔚敏《数据结构(C语言版)》第四章 纯C实现
  20. react-native自定义头部

热门文章

  1. 1.1 密码学哈希函数
  2. vue3 父子组件通信
  3. 电脑管理心得体会2020-1-13
  4. 高德地图驾车路径规划API,获取两地点之间的驾车里程和时间
  5. 您的应用存在隐藏最近任务列表名称的行为,不符合华为应用市场审核标准
  6. soap和wsdl的理解
  7. git clone老是失败,试试设置代理
  8. HashMap为什么线程不安全
  9. HTML——基础知识点总结
  10. PagerAdapter中的NotifyDataSetChanged