- 博客(43)
- 收藏
- 关注
原创 C#高级语法总结
界面事件触发 → 异步 / 多线程采图 → Lambda+Linq 处理图像数据 → 委托回调算法结果 → 泛型统一设备管理 → 反射动态配置参数 → 异步存库上报 PLC这就是完整机器视觉上位机开发逻辑以前有多少类型写多少次。通过反射把以前写的类型现在就用一份逻辑实现,调用用一个逻辑实现相同类型来应用。相同应用类型用第一点代入实际不同类型即可代入不同类型实现目标类,无序提前目标代码硬编。绕过直接代码过程,效率慢直接代码,小的没必要。
2026-05-18 20:33:33
506
原创 C#进阶语法**总结
image-20260428205354487](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20260428205354487.png),必须声明主体。### 类(定义、对象、类和对象使用、属性、抽象类、静态成员、静态类、密封类、构造函数、私有构造函数、析构函数、this关键字、索引器、索引器重载);(类、对象、属性、构造函数):相机、光源、算法工具、参数配置、设备控制类。
2026-05-13 17:49:24
543
原创 # C#基础语法总结
自增自减:对当前值自增后后去自增后的值++在前,处理过后自减是不是立即赋值,立即赋值--在前,不是立即赋值写在前后都无所谓。成员都是internal形式,即使是共有的也是internal,也可以外部访问,只限在同一程序集里面。方法是对一个特定功能的封装。方法访问修饰符:再一个类中定义,再另一个类中调用。三维:外层看做一个一维数组,每个元素里面又是一个二维数组,二维里面又看做一个一维,里面每个元素又是一个一维数组。数组是一个集合,集合中存在同一种类型的数据,数组长度固定,具有连续的内存位置。
2026-05-13 17:48:02
293
原创 注册表技术+游戏开发+AI图像识别软件+企业ERP系统
静态类,不能被实例化。记录了很多用户配置信息,控制系统显示时间,显示样式,优化系统时候都可以通过注册表实现。注册表存储相关信息,com组件--信息存储到注册表里面,才能由客户调用。不是静态类,通过创建类的对象来调用属性或方法去执行注册表相关操作。添加文件:添加引用--浏览按钮--百度云dll文件添加就可以了。优化系统软件、QQ电脑管家,很多优化系统功能都通过注册表实现。返回字符串数组类型的值,包含所有子项的名称。在注册表创建相应的项,使用这两个方法。添加Everyone用户,添加权限。
2026-04-16 15:11:45
436
原创 线程的使用
最高优先级线程经过调度后总会优先执行,或具有相同优先级多个线程同时用的话这个程序会遍历处于该优先级的线程,为每一个线程提供一个固定变量执行,具有较高优先级线程运行情况下,较低优先级线程不会被执行。出生状态--Start方法调用线程进入就绪也称为可执行状态,等待CPU线程分配时间线,CPU执行线程进入运行状态,在就绪和运行状态下进行转换,同时也可能进入暂停状态,通过调用Thread对象的三个方法,暂停状态下系统持有输入输出资源,没做任何操作。Thread类的Abort方法,实例方法,用线程对象来进行调用。
2026-04-15 21:28:55
326
原创 文件及数据流技术与GDI技术
三种操作:读取,写入,查找VS帮助里面看用法。属性说明Length获取用字节表示的流长度Name获取传递给构造函数的FileStream的名称Position获取或设置此流的当前位置获取或设置一个值,该值确定流在超时前尝试读取多长时间获取或设置一个值,该值确定流在超时前尝试写入多长时间流添加IO命名空间。
2026-04-14 17:49:35
377
原创 面向对象编程进阶
数组只能一次获取摄入一个元素的值)提供只读和固定大小包装返回到集合方法,数组没有这类方法。引用方法类型(方法引用) 一旦为委托分配方法,委托就具有与方法完全相同的行为。匿名方法:简化委托方法的定义。触发传递值必须是this关键字 , 事件中包含的数据 需要触发事件时定义,右边的派生类。迭代family对象,定义接口接口实现~方法,类变迭代类,用foreach迭代类显示类里面提供的数据。定义泛型接口,接口返回值类型直接使用类型接口T,接口中使用类型参数T表示接口返回值类型。
2026-04-13 18:08:05
405
原创 程序调试与异常处理
在程序中查找错误的一个过程。开发过程中检查代码并验证能正常运行的有效方法。保证没问题才给设备使用。处理应用程序可能产生的错误或是其他可以中断程序执行的异常情况。Exception异常类(所有异常父类)--实在不知道什么异常用这个父类去处理微软官方提供,NET帮助文档子类异常类说明在算术运算期间发生的异常当存储一个数组时,如果由于被存储的元素的实际类型与数组的实际类型不兼容而导致存储失败,就会引发此异常在试图用零除整数值时引发。
2026-04-11 17:01:55
295
原创 DataGridView数据控件
下面通过一个例子看一下如何使用DataGridView控件,该实例主要实现的功能有:禁止在DataGridView控件中添加/删除行、禁用DataGridView控件的自动排序、使DataGridView控件隔行显示不同的颜色、使DataGridView控件的选中行呈现不同的颜色和选中DataGridView控件控件中的某行时,将其详细信息显示在TextBox文本框中。DataGridView控件,又称为数据表格控件,它提供一种强大而灵活的以表格形式显示数据的方式。readonly属性--灰色界面。
2026-04-11 16:10:32
43
原创 LINQ数据访问技术
语言集成查询(LINQ)可以为C#和Visual Basic提供强大的查询功能。LINQ引入了标准的、易于学习的查询和更新数据模式,可以对其技术进行扩展以支持几乎任何类型的数据存储。主要是中间三个部分。
2026-04-03 09:28:33
207
原创 数据访问技术
安装微软软件自带数据库--小型应用程序中型应用程序大型应用程序行和列用字段形式表示 库--数据库 表中创建字段通过设置值实现创建数据库:后面跟数据库名称语法:create database 库名简单的SQL语句: 增删改查及关键字查个数据表中某个所有数据 select*查询tb1执行查询id为1数据添加和查询数据改为小张删除 结果为无id为1的数据开发中经常使用--增删改查编写SQL语句时候用大写用大写用小写用小写方法1:循环读取DR数据时候用。
2026-04-01 17:28:52
430
原创 Windows应用程序高级控件--熟练掌握
对它进行分组(下面--名称和类别) 常用使用方法1-2:ListBox和ComBox空间添加移除项方法一样。都是使用三个方法。添加ListView控件默认没有任何显示,找到属性Items添加项,添加项是这个对象,这里面需要设置Text值“用户”,再添加一项设置密码。想要给每一项设置图标ImageList属性,这三个属性通常和Imagelist组件来进行设置。Imagelist是组件无可视化界面。可以在它的属性里面添加相应图片再通过这个设置图像相应大小。
2026-03-01 21:21:58
697
原创 Windows应用程序常用控件
控件:用户主要用来进行输入或操作数据的对象。相当于汽车里组成各个零部件,汽车的各个组成部分。C#所有基础都是类。控件类是:control 定义控件类常用属性、方法和事件。比如button控件的text属性是control基类中定义。只要是公共的方法、属性或事件都是在control基类里面定义的。通过VS提供的帮助。社区版不带帮助。打开浏览器。控件和组件区别:控件是可视化,组件是不可视化。组件:无可视化效果重点:控件基类是control类。
2026-02-27 10:31:10
819
原创 Windows窗体应用程序设计
对于Form类窗体类的任何交互都是基于事件来实现,Form窗体类提供大量事件,用于相应执行窗体的各种操作。Form窗体类型参数(窗体类型),Run方法里指定那个Form类型窗体,哪个窗体就会作为启动窗体。设置MDI窗体时在MDI主窗体里面通常有一个菜单,菜单主要在父窗体和MDI子窗体里面进行切换。控制窗体在最前面显示--不管鼠标定位在哪个窗体上这个窗体都会在最前面显示。正常打开在窗体外面,设置子窗体 this保留关键字--保留当前窗体对象。创建Form2窗体对象,调用Show方法显示窗体。
2026-02-25 16:31:11
700
原创 面向对象编程
三个重要概念:类(重要)、对象(重要)和实例化(将类创建为对象的一个过程)。保留关键字:this关键字。什么是对象:对象是一个抽象概念,英文叫Object,表示现实中任意存在的事物。eg:杨工是人类的一个对象。对象的概念:对象是人们要进行研究的任何事物。两台车就是两个对象,有各自基本特征和他们的动作。
2026-02-23 15:31:20
891
原创 数组和集合
简单问题:求4个整数的最大值?求四个整数的最大值?如何表示4个整数?--用4个整数变量如何求出最大值?--注意比较这4个变量的大小获取值定义4个类型变量赋值,定义int类型变量max记录初始的值。比较第一个与第二个值的大小关系,再使用max变量记录相对较大的值。然后再跟第三个及第四个比较。最后获取到的max就是4个数中的最大值。想一想数组概念:数组是具有相同数据类型的一组数据的集合。数组中的每一个变量称为数组的元素,数组能够容纳元素的数量称为数组的长度。80--数组长度。
2026-02-12 18:52:14
1284
原创 流程控制语句--switch多分支语句使用、while循环语句的使用、do...while语句、for循环
表达式1用来初始化循环变量判断表达式2的真假,如果是真执行循环体中语句,再执行表达式3,表达式3对循环变量进行递增递减操作,执行完表达式3后再来判断表达式2的真假再循环执行,如果表达式2为假直接跳出for循环执行后面的语句。执行流程:执行下来之后会首先判断表达式的真假值,真的话执行循环语句再返回去重新判断表达式的值(每执行一次循环都会判断一次表达式的值),如果为假直接执行循环外面的语句。简单执行流程:首先执行循环语句再判断表达式真假,如果是真循环执行这个语句再来判断,如果是假跳出循环执行其它语句。
2026-02-06 21:51:10
1478
原创 流程控制语句--if语句
定义两个变量进行赋值,if...else...if分别进行判断执行相应语句,两个里面嵌套if...else语句,左边if else嵌套else if里面 第一个与else if对应的大括号对应。if判断表达式1 如果满足在{}嵌套if...else if...else嵌套到if语句里面 判断表达式2是否满足,满足执行为真,不满足执行为假。执行流程:根据表达式判定结果真的执行语句一,假的执行语句二。别名叫法:条件判断语句或选择结构语句或分支语句--需要在开发程序时需要进行选择的过程。
2026-02-05 16:48:13
984
原创 字符与字符串
主要用来存储单个字符,占用16位2个字节内存空间,必须包含在一对单引号内。使用char定义变量然后输出。字符特性:C#里字符都是用单引号引起来的。主要是存储单个字符。定义:C#语言中,使用char/Char类定义字符,并且字符只能用单引号引起来,用其他会产生编译错误。ch1:字符变量名称。赋值:单引号引起来的一个字符。单引号中间引起的一个字符:合法字符。单引号中间引起的多个字符/双引号引起来的字符:不合法字符。错的三个本身不正确。namespace 字符与字符串。
2026-02-04 21:08:42
1702
原创 傅里叶变换及ROI绘制
ROI:需要哪个区域把这个区域着重搞下来处理。--这个过程叫绘制ROI方式。带箭头的ROI可以旋转,默认的中心是当前ROI的中心位置。display--区域、图像、轮廓方式显示出来。halcon当中算子涉及到绘制--draw。点这里--创建新的ROI--创建窗口。顺时针旋转为负,逆时针旋转为正。Halcon工具如何使用ROI。
2026-02-03 11:41:46
323
原创 表达式与运算符
左侧填充时需注意:二进制数分为正数和负数,正数高位是0,负数高位是1,向右移如果最高位原始是0,就在最高位补充0,如果原来最高位是1就需要在最高位补充1。错误原因:--是一个单目运算符,优先级最高先被执行,执行完后其它赋值运算符从右向左进行计算 --执行完后变成一个常量值放在运算符的左边,运算符左边必须是变量、属性或索引器,因此发生错误。如果使用一个符号表示逻辑与运算符,即使第一个已经是false,还会判断第二个操作数是true还是false,最后再返回false结果。相当于:a = (b = c);
2026-02-02 21:55:24
983
原创 常量的使用
可以在定义的时候进行初始化,也可以在定义的时候直接给它定义一个名称,然后在构造函数中对它再进行初始化。对readonly常量在其他地方进行初始化时候限定范围只能是在构造函数中才能对它的值进行修改,在其他地方不能对它的值进行修改。构造函数以外其他地方想对readonly值进行修改的话,静态的调不出来加static,弄成静态后构造函数也改成静态的。Error2//定义时或构造函数时进行初始化,其他地方对静态只读字段赋值有错误。运行时常量 readonly: --不能定义在方法中,只能定义在类体内。
2026-01-26 18:14:42
298
原创 数据类型转换
值类型变量i转换成object类型变量--装箱操作,转换完成后在栈上存在obj变量,obj变量在堆上存储的值就是从栈上复制过来的i的值10;short类型值和char类型值相加操作 short类型可以转换成int类型 char类型也可以转换成int类型 两个int值相加没错误。对obj引用类型变量进行拆箱操作就会转化为值类型变量存储在栈上。double类型和float类型相加操作 double精度比float类型精度高,float类型可以隐式转换为double类型。
2026-01-26 17:22:28
875
原创 枚举使用讲解
这一块想要输入Mrkj 的C CS Java直接通过智能提示选择性输入,想要输入我们不会输入的两个 (由于枚举里面没有定义如果强制写的话编译器会提示错误,而且在智能提示里面也没有。实际开发程序中表示用户权限通常使用枚举表示用户的各种权限,根据枚举字段所表示的用户权限来设置各级别用户它所拥有的不同的操作权限。编写日期相关程序(年月日数据),就可以把这些数据组织成多个不同名称的枚举字段。C#定义枚举语法:访问修饰符 enum 枚举名 {值1,值2…枚举定义一组有限的值,枚举里不能包含方法。
2026-01-25 21:38:02
378
原创 数据类型--值类型与引用类型
object=System.Object (是等价) --C#严格区分大小写对object无效,小写与大写的是同一个类型。C#里所有类的基类都是object类 --int、char、字符串、自定义一些类时基类都是object类,上面派生出其他类。使用object类型时使用它能绑定任何子类型的对象。定义其他类时都可以引用这些方法。定义int类型变量 i赋值i就能使用这几个通用方法,这几个通用方法就是object基类提供的一些方法。
2026-01-24 23:02:55
946
原创 变量定义及应用
C#变量定义:存储区(内存)中的一个存储单元。变量:名称、类型和值。变量名:变量在程序源码中的标识。变量类型:变量在内存中大小和类型。变量值:内存中具体数据。程序执行中,变量值可以发生变化。未经声明变量无法在程序中使用。变量:一种标识符。符合标识符命名规范。变量命名规则(面):1.变量名区分大小写。2.变量名只能有字母、数字和下划线组成。3.变量名第一个符号只能是字母或下划线,不能是数字。4.变量名不能用关键字。
2026-01-23 22:46:23
1048
原创 傅里叶变化+ROI+模版匹配
3)第三部分进行划痕区域的处理,先将亚像素轮廓转为区域,使用的算子是gen_region_contour_xld;*4)最后对图像进行傅里叶反变换,使用的算子依然是rft_generic,注意和第二步中的参数进行区分。二值化完全做不出来,分水岭不行,布料有孔,高频代表高通滤波通过,低频滤波抑制。*1)先生成一个滤波器,此处生成的是正弦形状的带通滤波,使用的算子为gen_sin_bandpass。*2)然后再进行图像的傅里叶变换,使用的算子为rft_generic,此处需要注意参数的使用。
2026-01-21 21:35:32
334
原创 C#程序基本结构
1.标识符必须以**英文字母`A-Z、a-z`开头**,后面可以跟英文字母`A-Z、a-z`、数字`0-9`或下划线`_`;--开发程序时并不一定要按照这些方法命名,但遵循这些规范程序可读性更好,尽量按命名规范命名,或公司与个人总结出一套命名规范来命名。/* *** */ 对下面类文件进行注释。一个C#程序基本组成:命名空间、关键字、Main方法、类、语句、注释、标识符。类的名称:以后想要使用这个类时都可以通过类名来调用这里面的内容--一个标识。类、项目、命名空间--如何命名。
2026-01-21 17:58:45
802
原创 形态学及图像处理平滑滤波--图像处理高阶内容
均值滤波是指任意一点的像素值,都是周围 N \M 个像素值的均值 对图像内部的噪声及模糊图像有很好的作用 例如下图中,红色点的像素值是其周围蓝色背景区域像素值之和除25,25=5*5 是蓝色区域的大小。经过膨胀操作,图像区域的边缘可能会变得平滑,区域的像素将会增加,不相连的部分可能会连接起来,这些都与腐蚀操作正好相反。◆开运算特点:具有与腐蚀相似的特点,但是能够防止区域腐蚀过度,能够很好的保持区域的形状。顶帽运算与底帽运算就是在开运算与闭运算的基础上,来处理图像中的各种杂点、空洞、小的间隙、毛糙的边缘等。
2026-01-19 20:16:23
618
原创 Halcon二值化处理与Blob分析
阈值范围:0-255算子//读取一张图像//转换成灰度图//二值化处理全局:针对整个图像这些灰度区域进行对应分割。基于直方图:Sigma:平滑值,值越大越平滑,反之值越大越不平滑。平滑:保证0-255之间都有对应像素点。Sigma值越大,波峰越少,分割区域数量越少。Sigma值越小,非平滑,波峰越大,分割区域数量越大。自动全局阈值分割 //明暗度筛选灰度值小就变黑,平滑就模糊。Image:需要进行阈值的图像;Region:处理后的区域;
2026-01-17 22:14:35
563
原创 C#及其开发环境
C#,读作 C Sharp,是微软公司设计的一种编程语言,是从C和C++基础上开发出来的一种简单、面向对象和类型安全的编程语言,并且能够与.NET框架完美结合。创始人: 丹麦 安德斯·海尔斯伯格 Delphi和C#之父,同时也是·NET创立者。
2026-01-16 18:09:43
818
原创 halcon算子初步
注释 * 批量注释/批量取消→F3 F3--激活 F4--取消。区域砍断【作用什么?】【把需求的区域独立为一个单独区域方便后提取】需求:把图片中的车牌提取出来或者定位车牌区域。4.区域砍断(作用是什么)。1.把图像加载到halcon中。在同一文件夹下相对目录就是当前目录。提取区域角度(phi)【弧度值】3.图像二值化(二值化作用)。2.把图像灰度化处理。5.区域特征筛选区域、6.把该区域图像进行锁定。把该区域图像进行锁定。
2026-01-15 22:34:41
391
原创 机器视觉理论基础(相机和镜头及选型)
视觉精度 = 公差大小 / 10单边分辨率 = 视野的大小或产品尺寸(长或宽)/ 视觉精度(像素)/ 2(亚像素)选择的像素=单边分辨率(长)* 单边分辨率(宽)焦距(f)=工作距离(镜头到目标的距离 WD)* 芯片尺寸( CCD靶面型号的尺寸)/ 视场大小或者物体高度(FOV)光学放大倍数 = 芯片尺寸( CCD靶面型号的尺寸)/ 视场大小或者物体高度(FOV)系统放大倍率 = 芯片短边( CCD靶面型号的尺寸)/ 视野短边。
2026-01-14 20:04:39
928
原创 Halcon初步
选中算子对应右键--打开算子所在窗口,算子所对应窗口打开。如果还没找到点算子选择帮助(跳到算子帮助文档里面来会提供很多算子使用案例)算子窗口:halcon用到的函数、方法统称为算子。i定义的值叫变量(可以根据用户的需求来)--严格按照强类型方式来定义。循环:处理的数据逻辑都一样,如果不用训练就重复写的,用循环就写一次。halcon语法:分支判断、循环、数组(元祖)和字典 运用。图像变量会把对应变量放窗口中。Halcon变量提取:图像、区域、轮廓、字符串、数字。变量窗口:(类型)图像变量窗口和控制变量窗口。
2026-01-13 20:07:23
929
原创 视觉相机电工基础
只需要配置相机输入 LINE0 相机输出LINE1 不用单独设置 在MVS 用户集中保存了 输出LINE1即可。PLC 接线图 通过使用PNP光电感应器 实现相机的硬触发 流程:触发相机拍照 然后相机控制光源触发。在2开项目中 不用在点击执行流程 通过PNP传感器就能触发。完成线路连接后 使用MVS 配置相机硬触发参数。通过 pnp传感器控制 硬触发拍照 检测。
2026-01-12 18:02:45
221
原创 机器视觉系统硬件构成基础介绍
(1)光源光源作为辅助成像设备,是机器视觉系统的重要组成部分,它为机器视觉系统的图像获取提供足够的光线。光源的作用有:1.显现被测物的重要特征 2.消隐不感兴趣区域,保证成像效果有利于图像处理。3.保证图像的稳定等。光源会直接影响到相机成像质量,进而影响视觉系统性能。(2)镜头镜头的主要作用是将目标成像在图像传感器的光敏面上。如果将机器视觉系统与人类视觉系统进行类比,那么镜头类似于人类眼睛的晶状体。有镜头相机才可以输出的清晰的图像。
2026-01-12 09:34:34
702
原创 2026人生体验单
学一些急救技能,如海姆立克急救措施、AED的使用等。有空时随机乘坐一趟公交车,体验未知带来的快乐。定期整理家中的闲置物品,可以转送给有需要的人。收集一个能让你快速开心起来的“能量歌单”。每月读一本“跨界”的书,试试写下读后感。尝试“数字断食”,每天少刷半小时短视频。认真对待身边的小动物,用领养代替买卖。拍晚霞、日出、花朵,拍一切美好的事物。尝试一项全新的运动,比如滑雪、游泳。尝试学习方言或外语,更多感知世界。记录不开心的事,写得越具体越好。学习使用记账软件,记录收支明细。天气好的时候,去公园发呆。
2026-01-11 19:53:23
305
原创 机器视觉理论基础(图像处理基础)
灰度的分布情况是该图像的一个重要特征。图像均衡化处理后,图像的直方图是平直的,即各灰度级具有相同的出现频数,那么由于灰度级具有均匀的概率分布,图像看起来就更清晰了。图像的灰度直方图是灰度级的函数,描述的是图像中具有该灰度级的像素的个数:其中,横坐标是灰度级,纵坐标是该灰度级出现的频率。直方图均衡化是将原图像的直方图通过变换函数修正为均匀的直方图,从而增加像素灰度值的动态范围,达到增强图像整体对比度的效果。具有各自图像属性(比如颜色,亮度等)的小方块,当他们按照一定的顺序进行排列时,就形成了所看到的图像。
2026-01-11 19:31:21
1098
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅