CaliperDemo.exe 卡尺测量、间距检测


边缘极性: 有亮到暗、暗到亮和任意 3 种模式;
亮到暗表示从亮度高过度到亮度低的边缘;
暗到亮表示从亮度低过度到亮度高的边缘;
任意模式则亮到暗和暗到亮的边缘都检测。

检测位置: 有起始、最后、最宽和全部 4 种模式;
起始表示只检测最靠近扫描起始位置的 1 个间距;
最后表示只检测离扫描起始位置最远的 1 个间距;
最宽表示只检测扫描范围内距离最远的 1 个间距,
全部表示检测扫描范围所有间距。

梯度阈值: 梯度表示边缘的强度(清晰度) ,取值范围 0~255 ,只有梯度值大于该值的 边缘点才会被检测到。
滤波半宽: 用于增强边缘和抑制噪音干扰,最小值为 1 ,当边缘模糊不清晰或有噪音干 扰时可以增大滤波半宽值,这样可以使得检测结果更加稳定,但如果边缘和边缘之间挨得太近(距离小于滤波半宽值) 时反而会影响边缘位置的精度甚至丢失边缘,所有要根 据实际情况来设置。


代码如下:

// stdafx.h : include file for standard system include files,or project specific include
// files that are used frequently,butare changed infrequently
在 StdAfx.h 的头文件中添加 CKVISION 相关定义

#include"…\…\Include\CKBase.h"
#include"…\…\Include\CKGDI.h"
#include"…\…\Include\CKCaliper.h"

#ifdef_WIN64

#pragma
#pragma
#pragma
#else comment(lib,
comment(lib,
comment(lib,
#pragmacomment(lib,
#pragmacomment(lib,
#pragmacomment(lib,

“…\…\Lib_x64\CKBase.lib”)
“…\…\Lib_x64\CKGDI.lib”)
“…\…\Lib_x64\CKMeasure.lib”)

“…\…\Lib\CKBase.lib”)
“…\…\Lib\CKGDI.lib”)
“…\…\Lib\CKMeasure.lib”)

#endif

usingnamespaceCKVision;

在应用程序入口和退出的地方增加初始化和释放 CKVISION 库。
// CaliperDemo.cpp : Defines the class behaviors for the
application.BOOLBOOLCCaliperDemoApp::InitInstance()

{
CKVision::InitLibrary();
//…

//…End
CKVision::ExitLibrary();
}

// 初始化 CKVision 库

// 退出 CKVision 库

在资源视图 Dialog 中添加相应的界面操作
// … … 详情请打开实例参考。

在对话框窗口的 .h 头文件中定义相应的图像处理功能:
// CaliperDemoDlg.h : header file
// CCaliperDemoDlg dialog

CPrImage
CGdiRotBox
CCaliper
COverlay
COverlay
显示。
CGdiView
CGdiProfile
COverlay
CGdiView

m_Image;// 基础图像
m_Rect;// ROI 检测区域
m_Caliper;//卡尺测量、间距检测、
m_Overlay;// 图像上层显示表面, 前显示的动态图形,主要用于ROI 显示。
m_Results;// 图像上层显示表面, 前显示的静态图形,主要用于检测结果生成图形

m_GdiView;// 图形显示视图窗口
m_Profile;// 投影曲线边缘位置显示
m_ProOver;// 曲线图形显示
m_ProView;// 图形显示视图窗口

在对话框窗口的.cpp 实现文件中添加相应的功能实现。
// CalibrationDemoDlg.cpp : implementation file
// CCaliperDemoDlg message handlers

BOOLCCaliperDemoDlg::OnInitDialog()
{
//…
RECTrect;
GetDlgItem(IDC_GDI_RECT)->GetWindowRect( &rect ) ;
ScreenToClient( &rect ) ;

m_GdiView.Create( m_hWnd, rect ) ; m_GdiView.SetBackColor( RGB (0,0,64) ) ; m_GdiView.SetDisplayImage( &m_Image ) ;

// 按自定义的区域创建图形显示视图窗口。 // 设置默认的背景颜色
// 设置当前显示的图像

m_GdiView.SetActiveOverlay( &m_Overlay ); // 设置当前显示的覆盖图ROI 图形显示。 m_GdiView.SetStaticOverlay( &m_Results ); // 设置当前显示的覆盖图结果图形显示。
m_Overlay.AddItem( &m_Rect ); //将需要显示的图形添加到覆盖图容器中。
//…
}
// 执行测量
voidCCaliperDemoDlg::OnExecuct()
{
// TODO: Add your control notification handler code here
m_Caliper.SetPolarity1 ( m_Combo1.GetCurSel() ) ;
m_Caliper.SetPolarity2 ( m_Combo2.GetCurSel() ) ;
m_Caliper.SetLocation( m_Combo3.GetCurSel() ) ;
m_Caliper.SetThreshold( GetDlgItemInt(IDC_EDIT1) ) ;
m_Caliper.SetFilterHalf( GetDlgItemInt(IDC_EDIT2) ) ;

BeginTime();

// 执行测量
m_Caliper.Execute( m_Image, m_Rect ) ;

EndTime();

// 创建投影曲线
m_Profile.Create( m_Caliper.GetLength() ) ;
m_Profile.SetCurve1 ( m_Caliper.GetProjection() ) ;
m_Profile.SetCurve2 ( m_Caliper.GetStrengths() ) ;
m_Profile.SetThreshold( double(GetDlgItemInt(IDC_EDIT1)) ) ;

// 建立坐标系变换
CFrameTranstrans( m_Rect ) ;

intitem;
CStringtext;

CaliperData* data;
m_List1.DeleteAllItems();
Overlay_DeleteAll(m_Results);// 清除已有的结果显示覆盖图形

for( inti=0; i<m_Caliper.GetCaliperCount(); i++ ) {
data = m_Caliper.GetCaliperData( i ) ;//获取数据
text.Format( “%d”, i+1 ) ;
item = m_List1.InsertItem( i, text ) ;
text.Format( “%0.2f”, data->Width ) ;
m_List1.SetItemText( item, 1, text ) ;
text.Format( “%0.2f”, data->Center.x ) ;
m_List1.SetItemText( item, 2, text ) ;
text.Format( “%0.2f”, data->Center.y ) ;
m_List1.SetItemText( item, 3, text ) ;
m_Profile.AddEdge( data->Edge1.Distance ) ;
m_Profile.AddEdge( data->Edge2.Distance ) ;
CGdiLine* p1 = newCGdiLine(
data->Edge1.Distance, 0,
data->Edge1.Distance,
m_Rect.height ) ;
if( p1!=NULL ) {
p1->Transform( &trans ) ;
p1->SetPenColor( RGB (0,255,0) ) ;
m_Results.AddItem( p1 );// 添加到结果显示图形表面
}

CGdiLine* p2 = newCGdiLine(
data->Edge2.Distance, 0,
data->Edge2.Distance,
m_Rect.height ) ;
if( p2!=NULL ) {
p2->Transform( &trans ) ;
p2->SetPenColor( RGB (0,255,0) ) ;
m_Results.AddItem( p2 ) ;
}

CGdiLine* p3 = newCGdiLine(
data->Edge1.Position,
data->Edge2.Position ) ;
if( p3!=NULL ) {
p3->SetPenColor( RGB (0,255,0) ) ;

m_Results.AddItem( p3 ) ;
}
}

m_GdiView.Redraw();// 刷新显示视图
m_ProView.Redraw();
}
// … … 详情请打开实例参考。

【机器视觉-卡尺测量、间距检测】相关推荐

  1. 趋高智能机器视觉图像目标尺寸检测尺寸测量的应用方案

    趋高智能机器视觉图像目标尺寸检测尺寸测量的应用方案. 趋高智能机器视觉系统具有测量功能,能够自动测量产品的外观尺寸,比如外形轮廓.孔径.高度.面积等尺寸的测量.尺寸测量无论是在产品的生产过程中,还是产 ...

  2. 卡尺测量的最小范围_工厂车间里常用的测量仪器使用方法介绍,你都会用吗?...

    一.测量器具的分类 测量器具是一种具有固定形态.用以复现或提供一个或多个已知量值的器具.按用途的不同量具可分为以下几类: 1. 单值量具 只能体现一个单一量值的量具.可用来校对和调整其它测量器具或作为 ...

  3. 【iPhone】缺陷检测机器视觉在制造业缺陷检测的应用情况

    机器视觉是通过计算机来模拟人类视觉功能,以让机器获得相关视觉信息和加以理解.可分为"视"和"觉"两部分原理,"视"是将外界信息通过成像来显示 ...

  4. 卡尺测量的最小范围_车间里常用的测量器具,别说没见过!

    数控技术在线 订单 | 技术 | 干货 | 社群 关注可加入机械行业群! 关注 一.测量器具的分类 测量器具是一种具有固定形态.用以复现或提供一个或多个已知量值的器具.按用途的不同量具可分为以下几类: ...

  5. 软件自动化测试图片,常见的机器视觉图像处理软件自动化检测软件介绍

    原标题:常见的机器视觉图像处理软件自动化检测软件介绍 免编程VisionBank SVS机器视觉软件 免编程的机器视觉软件VisionBank SVS,其工具库能够满足各种视觉需求,从几何物品的定位和 ...

  6. 缺点 霍夫圆_基于机器视觉的磁环表面缺陷检测研究

    基于机器视觉的磁环表面缺陷检测研究 [摘要]:我国是磁性材料制造生产大国,磁材生产企业众多.目前,大多数磁材生产企业仍采用传统的人工对磁材进行尺寸测量与缺陷检测.随着我国产业制造的不断转型升级,企业对 ...

  7. 趋高智能机器视觉在无纺布视觉检测方案中的应用

    趋高智能机器视觉在无纺布视觉检测方案中的应用. 无纺布(英文名:Non Woven Fabric 或者 Nonwoven cloth)又称不织布,是由定向的或随机的纤维而构成.因具有布的外观和某些性能 ...

  8. 基于机器视觉的图像处理缺陷检测方法论文学习

    基于机器视觉的图像处理缺陷检测方法论文学习 Machine Vision based Defect Detection Approach using Image Processing Abstract ...

  9. 国家实用新型发明专利:一种机器视觉的流水线智能检测报警系统

    国家实用新型发明专利:一种机器视觉的流水线智能检测报警系统 [系统装置设计图] 文章目录 国家实用新型发明专利:一种机器视觉的流水线智能检测报警系统 `[说明书摘要]` `[权利要求书]` `[说明书 ...

最新文章

  1. google gflags的参数解析,便捷实用
  2. 如何创造char二叉树C语言,递归创建二叉树c语言实现+详细解释
  3. MVC架构接收jsp页面传值
  4. 华为p20Android怎么解开,华为P20如何获得root权限来解决自启动手机应用程序的问题...
  5. 【英语学习】【English L06】U04 Adventure L4 I got lost in New York
  6. 后置三摄!郭明錤再曝新一代iPhone:屏幕变化不大
  7. 05NumPy--5.2创建NumPy数组
  8. c#无标题窗口的拖动
  9. 【数据结构】并查集入门例题讲解(c++代码逐句分析)
  10. “姑娘好像花儿一样”如何英译
  11. 从mysql随机抽取数据_mysql随机抽取一定数量的记录实例讲解
  12. mysql数据库增量_mysql数据库增量同步
  13. python爬取酷狗音乐top500及歌词_爬取酷狗音乐Top500(示例代码)
  14. ES 根据查询条件求和sum
  15. Python之禅及其翻译
  16. 介绍几款不是太有名的固态硬盘产品
  17. ValueError: With n_samples=1, test_size=0.2 and train_size=None, the resulting train set will be
  18. 生物质的特性对其与煤共气化过程的影响
  19. win 7 中的快速启动栏的设置
  20. conda使用清华源解决pytorch安装过慢问题5分钟安装成功!!!!!!!

热门文章

  1. 浙江工商大学计算机考研调剂,浙江工商大学2019年考研预调剂信息
  2. python笛卡尔坐标系_将GPS的WGS84坐标(大地坐标系)转换为平面坐标(笛卡尔坐标系)的方法...
  3. 实时的可视化疫情地图
  4. cdoj 1342 郭大侠与甲铁城 树状数组+离线
  5. 杰里之用于做对讲机【篇】
  6. 2010年3月23日俱乐部活动,“云计算实践”主题活动
  7. django 浅谈索引
  8. 使用Python编写机器学习入门教程
  9. TLS/SSL如何使用公钥加密
  10. 韦东山嵌入式第一期学习笔记DAY_24——18_9_五点法校准法理解