zoukankan      html  css  js  c++  java
  • 图像处理笔记(十三)

    实现一个小功能,wpf和halcon的混合编程,用halcon实现实时捕获摄像头图像

    在wpf中添加一个halcon控件

    之前做过,但是一段时间不用给忘了。。。自己记录一下吧。

    1. 添加引用:halcondotnet,在安装目录内部的某一层里面
    2. wpf设计界面,工具箱中任找一个工具右击——选择项——WPF组件浏览——选择halcondotnet.dll——确定,这样就添加了HSmartWindowControlWPF和HWindowControlWPF两个控件了。
    3. 需要添加System.Drawing引用,halcon提供的控件依赖于它。
    4. .net framework需要改成4,不然会提示加载不正确的程序集。

    基本思路是通过hdevelop生成连续抓图的代码,然后导出为cs,找到这个cs文件中的核心代码,也就是抓图的代码,添加到我的wpf项目中,
    注意这个抓图应该放在一个单独的线程中,否则会导致程序卡死,因为一直在抓图。
    生成的代码中不包含图像的显示,最简单的方法需要额外调用显示函数来将图像显示出来,这样就实现了实时监控。
    其实wpf中有相关实时抓拍的控件的,但是为了后续操作,就使用halcon的控件了。

    回顾

    今天来重新梳理一下太阳能板的缺陷检测(inspect_solar_fingers.hdev),之前因为很多理论知识还不了解,只是大概读了一下代码。
    有几个注意点,重新理解了一下:

    1. 为什么要将三通道图片分解为三张单通道图片?根据观察,图像背景整体呈现为蓝色,而太阳能板的那些横竖是白色的,通过拆解图片,仅取R通道的图片,可以大幅度的降低背景对检测的影响。
    2. 对R通道图片做阈值过滤的时候,发现过滤出来的不是我想的那样是一大片一大片的区域,原因在于在过滤前的一行代码 dev_set_draw('margin') ,使得过滤得到的内容只将边缘标记出来,而没有标记内部。只是看起来有差别,对之后的操作没有影响。
    3. shape_trans算子用来做区域变换,例如用一个矩形框出包含这个区域的最小矩形,或者用一个椭圆来圈出这个区域等等。
    4. 用一个1*25的矩形做腐蚀的原理在于,基于假设横的线条有断裂缺陷,这样就会有两块的区域有很细小的连接处,25的高度是一个高于单块区域,低于两块区域的高度,这样就能够过滤出这个连接处,从而定位缺陷。

    总结一下:
    这个算法的应用场景只能是基于横线区域有问题的假设,如果是竖线断裂,根据1*25的腐蚀矩形结构元是无法检测出来的。

    突然有点混乱了,从最开始的跟着书上学习,到现在的完全抛弃了书本看例程,下一步怎么走需要再规划一下了。

  • 相关阅读:
    HUST 1584 摆放餐桌
    HUST 1585 排队
    HUST 1583 长度单位
    树状数组 poj2352 Stars
    Visual Studio2013应用笔记---WinForm事件中的Object sender和EventArgs e参数
    倒置输入的数 Exercise07_02
    指定等级 Exercise07_01
    检测密码 Exercise06_18
    一年的天数 Exercise06_16
    数列求和 Exercise06_13
  • 原文地址:https://www.cnblogs.com/yutou2016/p/11136470.html
Copyright © 2011-2022 走看看