- 博客(91)
- 资源 (6)
- 收藏
- 关注
原创 给订阅读者的一封信
随着毕业季的到来,看到有一部分毕业生订阅了《halcon学习》专栏,在这里我特别想说几句,怕他们重蹈我的覆辙,算是过来人的建议吧 首先,从大的层面看,咱们国家在提倡基础科学,基础学科,基础软件,工业软件等,我们用的VS受美国和国际版权法保护,我们用的AutoCad,Matlab,工程仿真软件等都出自欧美国家,今天不让华为使用光刻机生成麒麟芯片,不让哈工大使用Matlab,明天就有可能不让我们使用VS和Halcon等商业软件,所以,建议刚毕业的同学去学习开源视觉库,如Opencv等,而该专题...
2020-08-13 22:59:05 1018 7
原创 halcon学习拓展系列—弱边缘缺陷检测方法汇总之空域方法(二)
上一专题《halcon学习拓展系列—弱边缘缺陷检测方法汇总之频域方法(一)》,该专题主要讲解频域检测边缘,本专栏主要讲空域边缘检测,总目录如下:一、基础知识二、算法实现1、自动阈值—由直方图确定的阈值分割图像2、频域高斯组合滤波器设计—原图*(大基元高斯低通卷积核-小基元高斯低通卷积核)3、导数滤波器4、高通滤波器5、正弦形状的带通滤波器下面开始一、基础知识...
2020-07-06 19:27:32 4744 2
原创 halcon拓展系列—求平面度、段差算子regions_to_plane
1、算子说明regions_to_plane(image,rectangleFit,regions: :rateLowRemove,rateHighRemove:grayval)** 功能:计算高度图像中:区域群到拟合平面的距离** 输入** image 输入点云图像** rectangleFit 输入拟合区...
2020-05-06 16:03:50 4651 10
原创 halcon拓展系列—计算任意矩形的四个角点坐标算子find_rectangle2_points
计算任意矩形的四个角点坐标,基本数学方法利用到了初中高中数学知识:正弦定理和余弦定理一、基础知识1、halcon的矩形rectangle2定义draw_rectangle2( : :WindowHandle:Row,Column,Phi,Length1,Length2)smallest_rectangle2(Regions: : :Row,Column,...
2020-04-27 13:39:05 9958 8
转载 WPF控件模板和数据模板的区别
WPF中模板与Style不同,Style只能改变控件的已有属性值(比如颜色字体)来定制控件,形同HTML中的CSS,但控件模板可以改变控件的内部结构(VisualTree,视觉树)来完成更为复杂的定制,其实WPF的每一个控件都有一个默认的模板。ControlTemplate通常只包含TemplateBinding表达式,绑定回控件本身的属性,而DataTemplate将包含标准绑定表达式,并绑定到其DataContext(业务/域对象或视图模型)的属性,它们面对的绑定对象类型不一致。
2024-06-20 19:11:25 83
转载 WPF Menuitem边框
本文介绍了WPF Menuitem边框的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
2024-06-05 14:42:13 90
原创 WPF RelativeSource属性-目标对象类型易错
详细介绍下AncestorLevel,它指的是以Bingding目标控件为起点的层级偏移量,S1的偏移量是1,G2的偏移量是2,G1是偏移量3,AncestorType指的是要找的目标对象的类型。AncestorType=TabItem,往上查找第一个TabItem控件,其Height="30",这样ScrollViewer的MaxHeight=30,直接造成显示不全。},则Bingding在寻找时会忽略非Grid的控件,此时G2的偏移量是1,G1的偏移量是2,StackPanel被忽略。
2023-11-01 18:05:08 1814
转载 WPF RelativeSource属性
详细介绍下AncestorLevel,它指的是以Bingding目标控件为起点的层级偏移量,S1的偏移量是1,G2的偏移量是2,G1是偏移量3,AncestorType指的是要找的目标对象的类型。我们进行Bingding时,如果明确知道数据源的Name,就能用Source或者ElementName进行绑定,但是有时候我们需要绑定的数据源可能没有明确的Name,此时我们就需要利用Bingding的RelativeSource进行绑定,这种办法的意思是指当前元素和绑定源的位置关系。
2023-11-01 16:29:48 242
原创 C# Thread.Sleep(0)有什么用?
1)在图形界面程序中,使用Thread.sleep(0)可以避免长时间运行的任务阻塞UI线程的执行。例如在GUI程序中,当用户通过按钮点击或其他事件触发某个任务时,在该任务完成前可能需要等待某个数据加载、文件下载或其他操作完成。如果不使用Thread.sleep(0),就可能导致主线程阻塞而导致程序无响应。2)在多线程爬虫程序中,使用Thread.sleep(0)可以有效地限制连接网站的频率,避免过于频繁访问同一目标网站而被封禁IP。
2023-10-13 16:59:48 1995
原创 Lock使用及效率分析(C#)
针对无Lock、Lock、ReadWriterLock、ReadWriterLockSlim四种方式,测试在连续写的情况下,读取的效率(原子操作Interlocked由于使用针对int,double等修改的地方特别多,而且使用范围受限,所以本文章没有测试)
2023-10-13 14:22:09 450
转载 C# 依赖注入:AddTransient、AddScoped、AddSingleton的理解
AddTransient: 每次service请求都是获得不同的实例,暂时性模式:暂时性对象始终不同,无论是不是同一个请求(同一个请求里的不同服务)同一个客户端,每次都是创建新的实例。AddScoped: 对于同一个请求返回同一个实例,不同的请求返回不同的实例,作用域模式:作用域对象在一个客户端请求中是相同的,但在多个客户端请求中是不同的。AddSingleton: 每次都是获得同一个实例, 单一实例模式:单一实例对象对每个对象和每个请求都是相同的,可以说是不同客户端不同请求都是相同的。
2023-10-12 17:46:47 2321
转载 C#图像处理之一 基本概念
比如一个 24x11 的图像,每行的像素信息就是 24*3 = 72, 正好是4的倍数,而一副 21x11的位图,每行像素信息为 21*3=63, 因为不足4的倍数,所以用1个字节来填充,这样每行像素信息为21*3+1=64字节,这一个字节在笔记中成为 offset, 所以 offset = BitmapData.Stride - BitmapData.Width * 3。如无特别说明,笔记中的所有图像处理,都为 Bitmap 且 Bitmap.PixelFormat=Format24bppRgb的格式。
2023-10-09 20:12:21 89
转载 TPL DataFlow 之一 ActionBlock
ActionBlock及ExecutionDataflowBlockOptions使用,实现数据并行处理,比起消费者队列更有优势
2023-09-08 14:43:54 295
转载 interface和abstract的区别
4. 抽象类中的抽象方法的访问类型可以是public,protected和(默认类型,虽然eclipse下不报错,但应该也不行),但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。比较两者语法细节区别的条理是:先从一个类中的构造方法、普通成员变量和方法(包括抽象方法),静态变量和方法,继承性等6个方面逐一去比较回答,接着从第三者继承的角度的回答,特别是最后用了一个典型的例子来展现自己深厚的技术功底。父类方法中间的某段代码不确定,留给子类干,就用模板方法设计模式。
2023-09-07 19:18:54 139
转载 客户体验改善计划的用户注销通知导致工控机自动重启
客户体验改善计划的用户注销通知导致工控机自动重启,尝试用两种方法去解决,效果待验证:1. 关闭Windows 客户体验改善计划2. 禁用Windows客户体验改善计划
2023-01-12 10:11:48 5103 3
原创 NetCore基于Roslyn的动态编译实现
AvalonEdit文本器+NRefactory+Roslyn动态编译1. AvalonEdit实现编写,高亮,复制,黏贴,撤回等基础功能2. NRefactory实现代码提示相关3. Roslyn实现动态编译(CSharpCodeProvider只支持Framework,Roslyn可以同时支持Framwork和netcore)
2022-12-13 18:48:43 2036
原创 HObject和Bitmap和Byte[]互转方法统计
1. 如果视觉框架使用到了几种图片对象格式,建议封装一个基于Byte[]的图像类,内部封装方法有选择性的生成HObject,Mat等。2.不建议使用Bitmap,包括处理和显示,多线程使用同一个实例容易报错。1.1 Hobject转Bitmap(2000万像素彩色图片测试)1.2 Bitmap转Hobject(2000万像素彩色图片测试)2.1 Hobject转Bitmap(2000万像素黑白图片测试)2.2 Bitmap转Hobject(2000万像素黑白图片测试)3. byte[]转H...
2022-11-10 22:13:50 1920
原创 Winform内存溢出的几种情况
工业视觉领域,内存移除往往是综合问题,现总结出几年来项目中遇到的内存溢出问题一、首先明确两个概念:内存和提交内存内存(专用工作集)/WS Private/ Private WS: 工作集的子集,它专门描述某个进程正在使用且无法与其他进程共享的物理内存值。这个值对于一个进程来说也是最重要的,它代表了一个进程到底独占了多少物理内存。提交大小/ Private Bytes/ Private: 给当前进程使用而保留的私有虚拟内存的数量,从名字里面的Private可以看出它是专有的,但是和上面的WS Pr
2021-11-24 16:09:43 3350
原创 逻辑归化于诚
释义逻辑:事理,因果,规律,方法归化:归服而受其教化诚:意诚不一定非得怎么样,但需要诚心坚持一个理念,不需要思考太多是是非非,人情世故,结果呢,基本上事情发展就是自己想要的样子,总结为一句:逻辑归化于诚缘由:买手机,不能因为一个原因就决定买或不买,打好准备(诚),到最后定有我认为的东风助,事可成...
2021-06-12 00:12:06 123
转载 如何从仿射矩阵得到旋转和平移
1、配准的点对得到仿射矩阵: M = cv2.estimateAffinePartial2D(point1s, point2s,maxIters=200,ransacReprojThreshold= 30)// estimateAffinePartial2D 使用ransca 从多对匹配点得到最优的仿射阵2、 R = M[0][0:2,0:2] // M 是2行3列的矩阵 , 其中前两列是旋转矩阵R, 第3列是平移量t det_r = det(R) R 是一个正交矩阵 , 行
2021-01-19 21:29:32 2716
转载 advTree的拖拽和禁用操作
advTree的拖拽和禁用操作默认情况下advTree启用了自动可以自身层级互相拖拽1此时如果想完全禁止拖拽只需要把advTree.DragDropEnable=false;即可 2.此时需要只是禁止advTree自身的拖拽 ,不影响它把数据拖向其他控件需要在事件 advTree_BeforeNodeDrop里面进行控制代码如下:private void advTree_BeforeNodeDrop(object sender, TreeDragDropEventArg...
2021-01-18 15:07:12 541
转载 C#类型定义变化不会影响反序列化的几种情况
C#对象持久化的步骤为:使用诸如BinaryFormatter类型,把类型实例(对象)序列化到流中,接着就可以把流保存到二进制文件。下次需要对象时,可以把这个二进制文件读到流中并反序列化为一个object对象,然后转换为原来的对象。 如果对象的类型在序列化后做了修改,那么反序列化为新类型对象的情况如何呢?笔者测试了如下几种情况,反序列化均是成功的: 1)增加成员字段、增加属性、增加索引、增加函数、增加接口继承和实现。 2)删除属性、删除索引、删除...
2021-01-05 20:29:37 282
原创 halcon学习拓展系列—交集intersection的拓展算子intersection_expand【2024更新】
在专题《halcon学习拓展系列—判定二维点集在Region的位置信息算子test_region_points_fast》中详细讲解过test_region_points_fast算子,在重构intersection函数中会用到该算子,本专题就来实现intersection_expand算子一、算子说明** 函数名称:intersection_expand** 功能:判断二维点集是否在Region上** 具体描述:只要Region中存在point在RegionBase中,则满足条件,添加到Re
2020-12-14 13:43:32 2294 4
原创 halcon学习拓展系列—判定二维点集在Region的位置信息算子test_region_points_fast【2024更新】
在专题《halcon学习拓展系列—判定二维点集在Region/Contour的位置信息算子test_region_points和test_contour_points》中详细讲解过test_region_points算子,该算子效率太低,在后面项目应用中看到了弊端,然后:不得不重构一个新函数test_region_points_fast,经项目中测试,在一张200万图片中运行时间为0.27ms(test_region_points运行时间是99.16ms),已满足项目CT需求该专题目的是为了重构inte
2020-12-14 13:31:40 1458 1
原创 halcon学习拓展系列—创建阵列算子create_array和create_odd_array【2024更新】
在求毛丝的中轴线/骨架时用到了创建阵列的功能,创建基于某个基准点的奇数阵列,偶数阵列,或者任意奇偶组合阵列,综合目前所需要的要求,封装了两个功能函数,分别是:1、create_array:创建阵列,基于左上角点排布2、create_odd_array:创建奇数阵列,基于中心点排布一、算子说明create_array( : : rowLeftUp, columnLeftUp, elementWidth, elementHeight : rowRound, columnRound)*.
2020-09-10 22:11:25 1588 3
原创 halcon学习拓展系列—判定二维点集在Region/Contour的位置信息算子test_region_points和test_contour_points【2024更新】
在专题《halcon学习实战系列—如何提取牛奶包装盒上的吸管之Contour截取算子crop_contours_xld_region(二)》中详细讲解过test_region_points算子,该算子应该是在拓展系列里面讲的,因为实战系列需要所以提前分享给了大家,为了拓展系列的完整性和结构性,这里再次整理到拓展系列另外,开始前吐槽一下,halcon的Blob分析全是基于像素的,如果想做亚像素的处理,只有Contour,而Contour的操作算子又很少,怎么办?只能用仅有的Contour算子拓展其他的Co
2020-09-09 00:16:29 1360 1
原创 halcon学习实战系列—如何更便捷,更高效的计算同心度【2024更新】
如何更便捷,更高效的计算同心度1、获取Contour2、拟合圆3、同心度计算首先,如何获取Contour,用前面专题讲的fit_circle_base_circle当然可以,直接将获取Contour和拟合圆一起完成,还可以加上漂亮的滤波那么,有没有更加便捷、高效的方式获取Contour呢,今天实战系列就是为此而来!另外,Contour操作比起Blob操作算子少得可怜,该专题有相关的Contour操作,这也是分享给大家看的原因之一,虽然专题简单,相信还是有可取之处,简单之处也有精要之笔
2020-09-06 20:13:39 1754 1
原创 halcon学习拓展系列—圆拟合卡尺算子fit_circle_base_circle
首先感谢wangpeng,joy和xy6300,三位提供了卡尺工具的思路,并提供了卡尺工具—rake函数,综合三位同事提供的思路,整合并优化,提出了矩形矢量直线拟合算子fit_circle_base_circle,增加了滤波功能,再次感谢三位同事!涉及到卡尺工具—rake函数,请参考博客园博主xy6300《边缘分析及直线和圆拟合——第5讲》一、算子说明fit_circle_base_circle(Image: :threshEdge,numEdge,transition,orie...
2020-08-28 21:27:30 1841 1
原创 halcon学习拓展系列—矩形矢量直线拟合卡尺算子fit_line_rectangle_vector
首先感谢wangpeng,joy和xy6300,三位提供了卡尺工具的思路,并提供了卡尺工具—rake函数,综合三位同事提供的思路,整合并优化,提出了矩形矢量直线拟合算子fit_line_rectangle_vector,再次感谢三位同事!涉及到卡尺工具—rake函数,请参考博客园博主xy6300《边缘分析及直线和圆拟合——第5讲》一、算子说明fit_line_rectangle_vector(Image,Rectangle: :dMRSigma,dMRThresh,lMRTran...
2020-08-12 14:22:49 1562
原创 halcon学习拓展系列—统一矩形描述unified_rectangle2_description
在《halcon学习拓展系列—以Phi方向作为轴线,求rectangle2的四个角点算子find_rectangle2_points_base_phi》提到了如何改变规定角度的矩形描述,实现该功能可以针对rectangle2做出四种描述,实际应用中可以根据情况选取其中的一种描述实现该功能后就可以直接获取rectangle2带角度的中分线,即《halcon学习拓展系列—计算Phi方向的矩形中分线算子get_rectangle_median_line_base_phi》中的get_rectangle_med
2020-08-11 17:46:54 510
原创 halcon学习拓展系列—以Phi方向作为轴线,求rectangle2的四个角点算子find_rectangle2_points_base_phi
本专题讲解的是以Phi方向作为轴线,求rectangle2的四个角点算子find_rectangle2_points_base_phi,有两个目的:1)为直线拟合算子做铺垫2)拓展一下find_rectangle2_points算子有需要的话可以参考之前的专题《halcon拓展系列—计算任意矩形的四个角点坐标算子find_rectangle2_points》一、算子说明find_rectangle2_points_base_phi( : :rowCenter,columnCen...
2020-08-07 22:13:32 1465 7
原创 halcon学习拓展系列—计算Phi方向的矩形中分线算子get_rectangle_median_line_base_phi
本专栏有两个目的,一是为了直线拟合算子做铺垫,二是为了拓展一下中分线算子;有需要的话可以参考之前的专题《halcon拓展系列—计算矩形中分线算子get_rectangle_median_line》一、算子说明get_rectangle_median_line_base_phi(Rectangle: :Angle:Row1,Column1,Row2,Column2)** 函数名:get_rectangle_median_line_base_phi** 功能:求rectang...
2020-08-06 00:17:42 949
原创 halcon学习拓展系列—笔画宽度分割算子swt_threshold【未经工程验证,仅供参考】
SWT(Stroke Width Transform)算法由Epshtein等在2010年提出,指示牌文字,斑马线,指引线等都有固定的宽度,分割时只用颜色和灰度会受到背景和前景颜色和灰度干扰,再加上笔画宽度特征,就能更好的对这些固定宽度对象进行分割经过碑文,道路指示牌,道路指引线的测试,发现swt对简易连通域的分割效果较好,对复杂连通域的分割效果较差,我觉得根本原因是swt时基于Contour上每个点在法向量方向上进行边缘点抓取,如果图像文字分辨率不高,Contour就不够准确,再加上汉字笔画之间有连通
2020-07-24 11:54:43 832 4
原创 halcon学习实战系列—如何提取牛奶包装盒上的吸管之Contour截取算子crop_contours_xld_region(三)
本着精益求精的态度,觉得牛奶吸管提取算法做的不够完善,对于Contour提取和Contour截取算子crop_contours_xld_region还凑合,但是对于前面的Blob预选取区域不很满意,这节完善它一、Blob预选取区域之动态阈值方法dyn_threshold(OrigImage,ThresholdImage:RegionDynThresh:Offset,LightDark: )下面简单描述一下局部动态阈值的Description1、OrigImage最好是...
2020-07-23 11:10:41 736
原创 halcon学习拓展系列—获取二维点集在直线的位置算子get_point_lr_position_base_line和get_point_ud_position_base_line
判断二维点集在基准直线的上下左右位置信息一、算子说明get_point_lr_position_base_line( : :row,column,rowStart,columnStart,rowEnd,columnEnd:pointPosition)get_point_ud_position_base_line( : :row,column,rowStart,columnStart,rowEnd,columnEnd:pointPosition)*******...
2020-07-22 19:27:28 1049 1
原创 halcon学习实战系列—如何提取牛奶包装盒上的吸管之Contour截取算子crop_contours_xld_region(二)
对于Contour截取算子crop_contours_xld_region,上个专题《halcon学习实战系列—如何提取牛奶包装盒上的吸管之Contour截取算子crop_contours_xld_region》里面详细讲解了,但是有不当之处,主要是概念上的,功能没有问题;这里提出来,改正,并改进算子一、算子名称修改crop_contours_xld_region(Contour,CropRegion:ContourOut: : )功能实际为选取CropRegion上的Contou...
2020-07-21 19:56:35 672
原创 halcon学习实战系列—如何提取牛奶包装盒上的吸管之Contour截取算子crop_contours_xld_region
在halcon学习网看到一个帖子,特别有趣,分享给大家,顺便将Contour截取算子crop_contours_xld_region列出来,个人认为,特别好用,相比halcon自带算子crop_contours_xld,crop_contours_xld_region更灵活,具体往下看原帖子网址:http://www.ihalcon.com/read-14233.html我的回复网址:http://www.ihalcon.com/read-14233-11.html开始...原帖子.
2020-07-21 17:24:17 971 1
原创 halcon拓展系列—计算矩形中分线算子get_rectangle_median_line
MVTec公司没有计划进一步封装算子,这些工作就需要halcon开发人员去完成,封装算子的过程同时也是知识积累,应用积累的过程,值得每一个halcon学习者尝试在Blob分析中,经常用到Rectangle的中分线,这节讲计算Rectangle中分线一、算子说明get_rectangle_median_line(Rectangle: :Line_Ori:Row1,Column1,Row2,Column2)** get_rectangle_median_line** 功能...
2020-07-21 16:08:34 1572
原创 halcon拓展系列—计算正矩形的四个角点坐标算子find_rectangle1_points
上面专栏讲过《halcon拓展系列—计算任意矩形的四个角点坐标算子find_rectangle2_points》,这里补充一下正矩形,即Rectangle1,因为很简单,这里不做基础知识板块一、算子说明find_rectangle1_points( : :row1,column1,row2,column2:row,column)查找正矩形Rectangle2的四个顶点** 函数名:find_rectangle1_points** 功能:求rectangle1的四个直角点*...
2020-07-17 13:33:40 2575
AvalonEdit文本器+NRefactory代码提示+Roslyn动态编译
2022-12-13
Wpf datagrid 高刷问题 解决方案
2022-12-01
HObject和Bitmap&Byte互转方法统计
2022-11-10
ImageMerge-两种halcon硬拼接对比
2019-01-29
C#事件使用Demo(类内和类间)
2017-04-21
linux C编程学习
2014-01-16
H264论文资料及JM模型测试代码
2014-01-14
基于Opencv和MFC的图像空域频域作业
2013-08-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人