<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Devin的博客]]></title><description><![CDATA[看山还是山，看水还是水]]></description><link>https://blog.youkuaiyun.com/IntegralforLove</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; IntegralforLove]]></copyright><item><title><![CDATA[Halcon 中实现 Otsu 算法]]></title><link>https://blog.youkuaiyun.com/IntegralforLove/article/details/100102105</link><guid>https://blog.youkuaiyun.com/IntegralforLove/article/details/100102105</guid><author>IntegralforLove</author><pubDate>Tue, 27 Aug 2019 17:02:21 +0800</pubDate><description><![CDATA[Halcon 中的全局阈值分割算子 binary_threshold 中，Method = 'max_separability' 指的就是Otsu法（最大类间方差法，有时也称之为大津算法）。


Otsu 算法也叫全局最优阈值处理，使用聚类思想，把图像的灰度数按灰度级分成2个部分，使得两个部分之间的灰度值差异最大，每个部分之间的灰度差异最小，通过方差的计算来寻找一个合适的灰度级别来划分。 所以可...]]></description><category></category></item><item><title><![CDATA[Basler相机外部触发设置]]></title><link>https://blog.youkuaiyun.com/IntegralforLove/article/details/94722689</link><guid>https://blog.youkuaiyun.com/IntegralforLove/article/details/94722689</guid><author>IntegralforLove</author><pubDate>Fri, 05 Jul 2019 11:38:48 +0800</pubDate><description><![CDATA[一、相机硬件接线图

2号引脚接传感器的触发信号引脚，5号与传感器共地连接。





二、pylon软件设置



三、halcon软触发相机拍照

Halcon采集助手设置软触发：

 1.set_framegrabber_param (AcqHandle, 'TriggerMode', 'On')
2.set_framegrabber_param (AcqHandle, 'TriggerS...]]></description><category></category></item><item><title><![CDATA[第十三章 跨线程访问可视化控件]]></title><link>https://blog.youkuaiyun.com/IntegralforLove/article/details/90053731</link><guid>https://blog.youkuaiyun.com/IntegralforLove/article/details/90053731</guid><author>IntegralforLove</author><pubDate>Fri, 10 May 2019 10:51:36 +0800</pubDate><description><![CDATA[目录

1 细说 UI 线程

2 跨线程访问可视化控件的基本方法

2.1 可视化控件的 Invoke 和 BeginInvoke 方法

如下由于可视化控件是由 “UI 线程” 创建的，而数据处理任务通常由其他一些线程执行，可将这些线程称为 “工作线程”，因此在用户界面上显示工作线程执行状态信息本质上是一个 “跨线程访问可视化控件” 的问题。

1 细说 UI 线程

在 Windows 应用...]]></description><category></category></item><item><title><![CDATA[第十二章 Winform 框架]]></title><link>https://blog.youkuaiyun.com/IntegralforLove/article/details/90053273</link><guid>https://blog.youkuaiyun.com/IntegralforLove/article/details/90053273</guid><author>IntegralforLove</author><pubDate>Fri, 10 May 2019 10:45:44 +0800</pubDate><description><![CDATA[目录

1 Win32 应用程序结构

1.1 Windows 消息循环

1.2 窗口过程

1.3 创建基于 Win32 的单窗体应用程序

1.4 创建基于 Win32 的多窗体应用程序

2 .NET Winform 程序与传统 Win32 程序的关联

3 Windows Forms 框架

4 Winform 程序结构

4.1 UI线程

4.2 消息循环

4.3 窗口过程

5 ...]]></description><category></category></item><item><title><![CDATA[第十一章 线程同步与并发访问共享资源]]></title><link>https://blog.youkuaiyun.com/IntegralforLove/article/details/90052827</link><guid>https://blog.youkuaiyun.com/IntegralforLove/article/details/90052827</guid><author>IntegralforLove</author><pubDate>Fri, 10 May 2019 10:25:33 +0800</pubDate><description><![CDATA[目录

1 死锁与数据存取错误

1.1 多线程程序中的 “死锁” 现象

1.2 多线程引发的数据存取错误

2 锁

2.1 锁定共享资源 —— Monitor

3 线程同步

3.1 等待句柄

3.2 使用互斥同步对象 Mutex

3.3 管理多个共享资源 —— Semaphore

3.4 线程同步事件类 —— EventWaitHandle

4 线程池

4.1 线程池简介

4...]]></description><category></category></item><item><title><![CDATA[第十章 多线程开发]]></title><link>https://blog.youkuaiyun.com/IntegralforLove/article/details/90052502</link><guid>https://blog.youkuaiyun.com/IntegralforLove/article/details/90052502</guid><author>IntegralforLove</author><pubDate>Fri, 10 May 2019 10:09:32 +0800</pubDate><description><![CDATA[目录

1 线程的创建、启动和停止

1.1 创建线程对象

1.2 线程的启动、暂停和提前中止

1.3 背景线程

1.4 等待一个线程的完成

2 Windows 操作系统线程调度策略

2.1 线程状态

2.2 线程优先级

2.3 Windows 操作系统的抢先式线程调度策略

3 向线程函数传送信息的方式

3.1 添加 “外壳” 方法

3.2 使用带参数的 Parameteriz...]]></description><category></category></item><item><title><![CDATA[第九章 进程与进程间通信]]></title><link>https://blog.youkuaiyun.com/IntegralforLove/article/details/90047822</link><guid>https://blog.youkuaiyun.com/IntegralforLove/article/details/90047822</guid><author>IntegralforLove</author><pubDate>Thu, 09 May 2019 21:17:16 +0800</pubDate><description><![CDATA[目录

1 操作系统的进程与线程管理

1.1 进程的创建与运行

1.2 进程中的线程

1.3 CLR 如何管理进程与线程

2 进程的启动与终止

2.1 进程启动

2.2 中止一个进程

3 进程间通信

3.1 使用剪贴板在进程间传送对象

3.2 使用 FileSystemWatcher 实现进程同步

3.3 使用内存映射文件实现进程通信

1 操作系统的进程与线程管理

1.1 ...]]></description><category></category></item><item><title><![CDATA[第八章 异步编程模式]]></title><link>https://blog.youkuaiyun.com/IntegralforLove/article/details/90045083</link><guid>https://blog.youkuaiyun.com/IntegralforLove/article/details/90045083</guid><author>IntegralforLove</author><pubDate>Thu, 09 May 2019 18:24:39 +0800</pubDate><description><![CDATA[目录

1 异步编程的必要性

1.1 同步调用与异步调用

1.2 基于委托的异步调用

1.3 等待异步调用完成

1.4 处理异步调用时的异常

1.5 异步编程小结

1 异步编程的必要性

.NET 的异步编程技术主要分为两大块：“使用 IAsyncResult 的异步编程模式” 和 “基于事件的异步编程模式”

1.1 同步调用与异步调用

通常情况下，当我们调用方法 A 后，在 A ...]]></description><category></category></item><item><title><![CDATA[第七章 事件及事件驱动]]></title><link>https://blog.youkuaiyun.com/IntegralforLove/article/details/90044930</link><guid>https://blog.youkuaiyun.com/IntegralforLove/article/details/90044930</guid><author>IntegralforLove</author><pubDate>Thu, 09 May 2019 18:15:09 +0800</pubDate><description><![CDATA[目录

1 .NET 事件处理机制的剖析与应用

1.1 直观理解 “事件” 的概念

1.2 事件与委托的关系

1.3 .NET 事件实现机制剖析

1.4 委托链表的分步调用

1 .NET 事件处理机制的剖析与应用

1.1 直观理解 “事件” 的概念

事件建立于委托的基础之上。

从面向对象角度来说，事件是由对象发出的消息，它是一个信号，通知其它对象有事情发生。例如，用户单击窗体上的某...]]></description><category></category></item><item><title><![CDATA[第六章 神奇的委托]]></title><link>https://blog.youkuaiyun.com/IntegralforLove/article/details/90043492</link><guid>https://blog.youkuaiyun.com/IntegralforLove/article/details/90043492</guid><author>IntegralforLove</author><pubDate>Thu, 09 May 2019 17:48:35 +0800</pubDate><description><![CDATA[目录

1 委托的概念与使用

1.1 委托概述

1.2 委托链表

1.3 委托的作用

2 使用泛型委托

2.1 自定义泛型委托与使用

2.2 Func 系列委托

2.3 Action 系列委托与 MethodInvoker

2.4 Predicate委托

3 匿名方法与 Lambda 表达式

3.1 匿名方法揭秘

3.2 奇特的 Lambda 表达式

4 掌握回调的编程技巧...]]></description><category></category></item><item><title><![CDATA[第五章 程序集]]></title><link>https://blog.youkuaiyun.com/IntegralforLove/article/details/90043149</link><guid>https://blog.youkuaiyun.com/IntegralforLove/article/details/90043149</guid><author>IntegralforLove</author><pubDate>Thu, 09 May 2019 17:20:30 +0800</pubDate><description><![CDATA[目录

1 程序集的基础知识

1.1 程序集的生成与使用

2 程序集与组件化开发

2.1 组件的概念

2.2 组件化开发方法及步骤

2.3 组件化开发中的组件依赖性

3 互操作程序集与本地类型

3.1 .NET 互操作程序集

1 程序集的基础知识

1.1 程序集的生成与使用

“程序集（Assembly）”是 .NET Framework 中基本的软件模块，它可以包含数目不限的类...]]></description><category></category></item><item><title><![CDATA[第四章 异常捕获与处理]]></title><link>https://blog.youkuaiyun.com/IntegralforLove/article/details/90042946</link><guid>https://blog.youkuaiyun.com/IntegralforLove/article/details/90042946</guid><author>IntegralforLove</author><pubDate>Thu, 09 May 2019 17:14:58 +0800</pubDate><description><![CDATA[目录

1 .NET异常处理基础

1.1 try、catch 和 finally

1.2 异常基类 Exception

2 应对程序运行时出现的异常

2.1 捕获多种类型的异常

1 .NET异常处理基础

1.1 try、catch 和 finally

C#使用 try...catch...finally 关键字编写异常处理代码块。其代码框架如下：


try
{
    // 可能引...]]></description><category></category></item><item><title><![CDATA[第三章 继承与多态]]></title><link>https://blog.youkuaiyun.com/IntegralforLove/article/details/90037572</link><guid>https://blog.youkuaiyun.com/IntegralforLove/article/details/90037572</guid><author>IntegralforLove</author><pubDate>Thu, 09 May 2019 15:49:44 +0800</pubDate><description><![CDATA[目录

1 方法的重载、隐藏与重写辨析

1.1 继承关系下的方法重载

1.2 子类隐藏父类的方法

1.3 方法重写与虚方法调用

2 通过实例理解多态

2.1 通过继承实现多态

2.1 利用接口实现多态

3 协变与逆变

1 方法的重载、隐藏与重写辨析

由于子类对象同时包含了父类和子类定义的所有公共方法，因此，子类方法与父类方法之间的关系可以概括为以下三种：

扩充：父类中没有与子类...]]></description><category></category></item><item><title><![CDATA[第二章 字段、方法与属性]]></title><link>https://blog.youkuaiyun.com/IntegralforLove/article/details/90036706</link><guid>https://blog.youkuaiyun.com/IntegralforLove/article/details/90036706</guid><author>IntegralforLove</author><pubDate>Thu, 09 May 2019 15:36:52 +0800</pubDate><description><![CDATA[1 字段与属性的初始化方式汇总

C#中类可以包含三种成员：

字段（Field）

方法（Method）

属性（Property）

其中，属性为字段的进一步封装。

1.1 对象初始化方式

假设我们定义一个类 Student


public class Student
{
   public string name;
   public int age;
}

我们可以通过采用以下方式直...]]></description><category></category></item><item><title><![CDATA[第一章  数据类型趣谈]]></title><link>https://blog.youkuaiyun.com/IntegralforLove/article/details/90033310</link><guid>https://blog.youkuaiyun.com/IntegralforLove/article/details/90033310</guid><author>IntegralforLove</author><pubDate>Thu, 09 May 2019 15:26:35 +0800</pubDate><description><![CDATA[目录

1 值类型与引用类型

1.1 线程堆栈和托管堆

1.2 引用类型变量的内存模型

1.3 “=” 和 “==” 辨析

1.4 装箱与拆箱

2 说不尽的字符串

3 数据类型的模板化——泛型

1 值类型与引用类型

1.1 线程堆栈和托管堆

值类型：int、double、enum、struct

引用类型：类、接口、数组、委托、String

值类型变量与引用型变量的内存分配模型...]]></description><category></category></item><item><title><![CDATA[C# 代码 XML 注释规范及其 .chm 帮助文档生成]]></title><link>https://blog.youkuaiyun.com/IntegralforLove/article/details/88245737</link><guid>https://blog.youkuaiyun.com/IntegralforLove/article/details/88245737</guid><author>IntegralforLove</author><pubDate>Wed, 06 Mar 2019 17:51:24 +0800</pubDate><description><![CDATA[一.摘要

当我们进行程序开发时，面对一个大型项目，需要多人分工合作，每人实现一个模块。当我们需要调用他人编写的模块时，首先参考的不是源码部分，而是要去通读其代码注释部分。因此，代码注释是否规范标准，很大程度上影响着项目的开发进度。

.Net允许开发人员在源代码中插入XML注释，这在多人协作开发的时候显得特别有用。C#解析器可以把代码文件中的这些XML标记提取出来，并作进一步的处理为外部文档。在...]]></description><category></category></item><item><title><![CDATA[机器视觉中的光源选型及打光方案分析]]></title><link>https://blog.youkuaiyun.com/IntegralforLove/article/details/87911341</link><guid>https://blog.youkuaiyun.com/IntegralforLove/article/details/87911341</guid><author>IntegralforLove</author><pubDate>Mon, 25 Feb 2019 09:47:20 +0800</pubDate><description><![CDATA[光源选择标准

光源的选择标准如下：

（1）光源均匀性要好，在有效的照射范围内，灰度值标准差要小；

（2）具有较宽的光谱范围，可以对不同材料的物体进行检测；

（3）光照强度要足够，提高信噪比，利于图像处理；

（4）具有较长的使用寿命及较高的稳定性，要保障光源在长时间运行状态下能够持续稳定的提供照明环境；

（5）成本低，易根据现场情况定制特殊形状光源。

2.2.2 光源的分类

光源从大...]]></description><category></category></item><item><title><![CDATA[Halcon 与 C# 混合编程]]></title><link>https://blog.youkuaiyun.com/IntegralforLove/article/details/84872496</link><guid>https://blog.youkuaiyun.com/IntegralforLove/article/details/84872496</guid><author>IntegralforLove</author><pubDate>Fri, 07 Dec 2018 14:02:09 +0800</pubDate><description><![CDATA[1.新建一个Windows窗体应用程序，命名为Demo



2.添加Halcon组件

右键引用 -&gt; 选择添加引用：



选择浏览：



在你自己Halcon的安装路径下，找到bin/dotnet35/，选择halcondotnet.dll文件，点击确定：



确定后，会在解决方案下引用列表中找到我们刚刚添加的halcon组件：



3.更改框架

右键工程 -&gt; 属性，...]]></description><category></category></item><item><title><![CDATA[Halcon解决方案指南（18）OCR--字符识别]]></title><link>https://blog.youkuaiyun.com/IntegralforLove/article/details/83756956</link><guid>https://blog.youkuaiyun.com/IntegralforLove/article/details/83756956</guid><author>IntegralforLove</author><pubDate>Mon, 05 Nov 2018 22:19:33 +0800</pubDate><description><![CDATA[第18章 光学字符识别_OCR

OCR（Optical Character Recongnition）即我们通常意义上讲的光学字符识别。在HALCON中，OCR常被用来分割区域及读取识别图像中的字符含义。

HALCON中提供了一组预先训练好的字体（在安装目录下的ocr文件夹中），这些字体来源于各个领域的大量训练数据，可识别文档、制药、工业产品或点打印，甚至手写数字文本。此外，HALCON还包括...]]></description><category></category></item><item><title><![CDATA[barcode_quiet_zone]]></title><link>https://blog.youkuaiyun.com/IntegralforLove/article/details/83722002</link><guid>https://blog.youkuaiyun.com/IntegralforLove/article/details/83722002</guid><author>IntegralforLove</author><pubDate>Sun, 04 Nov 2018 23:18:31 +0800</pubDate><description><![CDATA[示例程序显示条形码受参数'quiet_zone'的影响。 该示例程序给出了如何为参数选择适当的值。

create_bar_code_model ([], [], BarCodeHandle)

set_bar_code_param (BarCodeHandle, 'persistence', 1)

PART I 读取条形码，无需空白区验证

QuietZone := 'false'

set_...]]></description><category></category></item></channel></rss>