- 博客(81)
- 收藏
- 关注
原创 CogToolBlock和CogIDTool工具
是一款功能模块,允许将多个视觉工具(定位、测量、检测工具等)组合橙一个自定义、可复用的处理单元(即“工具块”)。通过定义工具块,可以实现复杂多规模工具布局变得简洁化,提高开发时增强代码可维护性。是一款专用于一维码和二维码解码的视觉工具,具有高效的读码能力和灵活的配置选项。
2025-03-06 20:49:37
652
原创 CogFindLineTool工具
CogFindLineTool通过灵活的卡尺配置和几何拟合算法,在工业视觉检测中实现了高精度的直线定位与测量。其核心优势在于可适应不同光照条件、复杂背景,并与其他VisionPro工具无缝协作,广泛应用于电子制造、汽车零部件检测等领域。
2025-03-04 17:57:45
930
原创 CogBlobTool工具
CogBlobTool通过灵活的阈值设置、形态学处理和特征筛选,适用于需要从复杂背景中提取并分析目标区域的场景。其核心优势在于适应性强、参数配置直观,且能与其他VisionPro工具(如CogPMAlignTool、CogCaliperTool)无缝集成,构建完整的视觉检测系统。
2025-03-01 21:33:31
1084
原创 CogFindCircleTool工具
CogFindCircleTool是专门用于在工业图像中自动检测圆形或圆弧的特征,它通过分析图像中的边缘信息,拟合出最优的圆形集合参数(如圆心坐标、半径),常用于精密测量、定位或质量控制等场景。
2025-02-27 20:49:35
732
原创 CogCaliperTool工具
康耐视VisionPro中的CogCaliperTool(卡尺工具)是一种专门设计用于图像处理和机器视觉应用中的卡尺工具,主要用于测量物体边缘之间的距离或宽度。这种工具能够帮助用户精确地确定物体特征的位置,并对生产线制造的零件进行尺寸检查等任务。
2025-02-26 17:28:25
1054
原创 VisionPro-PMA工具
康耐视(Cognex)的VisionPro是一款广泛应用工业自动化的机器视觉软件平台,其模板匹配(Pattern Matching)功能是核心工具之一,常用与目标定位、特征识别和质量检测等场景。:通过预先定义的参考(模板),在实时图像中快速定位相似区域。:定位工件、验证特征是否存在、检测位置偏移、二维码/条形码定位。:VisionPro的PatMax和PatFlex算法是其核心专利技术,具有高精度和控干扰能力,支持旋转、缩放、光照变化和部分遮挡。
2025-02-25 21:27:20
1027
原创 康耐视(VisionPro)安装流程
康耐视(Cognex)是一家专注于为制造自动化领域提供视觉系统、视觉软件、视觉传感器和工业读码器的全球领先供应商。VisionPro是康耐视推出的一款强大的计算机视觉软件,专为处理具有挑战性的二维和三维视觉应用而设计。
2025-02-24 18:05:55
1381
原创 AI视觉发展史
它解释是反映人脑视觉感知里面中间的这一层,比较早期的视觉感知,实际上大家可以理解为视觉系统所生成的中间结果,其实并没有什么X用(-_-b)。@系列的大广角双目结构光深度相机,提供0.2m~2.5m的探测距离,深度图像分辨率最高可达640*320,1m处深度精度可达12mm,运行平均功耗低于2.5W,搭配高分辨率的RGB模组可适配客户各种场景下的识别需求,产品适用于机器人避障和识别应用。2007年,机器视觉软件学会了识别人们的情绪,并根据情绪的变化来描绘肖像,因为这项改进,清楚地表示物体表面方向的信息。
2025-02-22 15:29:00
942
原创 C#最新语言特性
近几年持续引入多个新特性以提升开发效率和代码质量,截至今年2025年2月,C#的最新稳定版本是C#13,它是在2024年11月发布的,下方是一些C#13中的新特性以及近期版本特性。
2025-02-22 11:07:19
1670
原创 C#中不安全代码(拓展)
在C#中的不安全代码(unsafe code)允许开发者们执行一些通常在托管环境中被禁止的操作,比如直接用指针继续宁内存操作。虽然听着不安全代码这个名字可能会想到危险等想法,但在实际上它只是表示这种代码的安全性是无法通过CLR(Common Language Runtime)自动验证。
2025-02-21 14:34:33
647
原创 反射和特性
自定特性类继承Attribute类并添加元数据应用特性将特性标记到目标代码元素[Author("Jane", Version = 2.0)] // 允许通过属性传递参数通过反射读取特性在运行时获取特性信息Console.WriteLine($"作者: {attr.Name}");
2025-02-18 21:16:56
927
原创 封装、继承、多态、抽象
概念核心作用实现方式典型应用场景封装保护数据安全private隐藏对象属性,控制访问逻辑继承代码复用和扩展extends+ 方法重写构建类层次结构(如动物分类)多态提高代码灵活性父类引用指向子类对象 + 方法重写统一接口处理不同对象(如图形绘制)抽象定义规范,分离实现抽象类(abstract)或接口(interface设计通用框架(如数据库操作接口)
2025-02-16 10:00:00
1322
原创 方法(构造方法、方法重载、可变参数)
在Java语言中方法构建复杂程序的基础组件,可以理解定义个使用方法,以及掌握方法重载、可变参数和方法重写等高级特性,对于编写高效、可维护的代码至关重要。
2025-02-14 20:55:03
1023
原创 类与对象(OOP)
类的定义使用class关键字定义类。类包含属性、方法、构造方法等。对象的创建使用new关键字调用构造方法创建对象。对象是类的实例,具有类定义的属性和行为。访问控制private:私有成员,只能在类内部访问。public:公有成员,可以在类外部访问。protected:受保护成员,可以在子类和同一包中访问。默认(无修饰符):包内可见。构造方法用于初始化对象。如果没有显式定义构造方法,Java会提供一个默认的无参构造方法。Getter和Setter用于访问和修改私有属性。
2025-02-13 21:00:00
654
原创 SQL Server安装流程
SQL Server 2022在安全性、可用性和性能方面不断创新,是现在最支持Azure的SQL Server版本。
2025-02-11 21:27:28
1323
原创 同步(Synchronous)和异步(Asynchronous)
同步:简单但阻塞,适合快速完成的操作。异步:非阻塞且高效,适合 I/O 或高延迟操作。始终遵循 async/await 模式,避免阻塞调用,合理处理异常和上下文。
2025-02-10 19:00:00
1066
原创 PLINQ(补充)
上一篇LINQ并行LINQ(Parallel LINQ,简称PLINQ)是.NET Framework中LINQ的一个扩展,它使得开发者能够以简单的方式利用多核处理器的计算能力来加速查询操作。PLINQ将LINQ查询转换为并行执行的形式,从而可以在多个线程上同时处理数据,这对于处理大量数据或者需要执行复杂计算的任务特别有用。
2025-02-08 11:35:01
564
原创 LINQ(Language Integrated Query)
语言集成查询(Language Integrated Query,简称LINQ)是微软在.NET Framework 3.5中引入的一项技术,它为C#和Visual Basic等编程语言提供了查询数据的能力。LINQ的核心思想是将查询操作直接集成到编程语言中,使得开发者可以使用一致的语法来查询各种类型的数据源,如内存中的集合、数据库、XML文档等。
2025-02-08 11:31:49
1633
原创 文件 I/O 和序列化
确保类具有公共默认构造函数,并且只包含可以序列化的成员(属性或字段)。你可以使用特性(attributes)来控制如何进行序列化。
2025-02-07 20:00:00
830
原创 文件 I/O 和序列化
你可以高效地对基本数据类型进行二进制格式的读写操作,这对于处理大量数据或者需要精确控制数据存储格式的情况特别有用。然而,请注意,对于复杂的对象序列化,你可能需要考虑其他方法,比如 XML 或 JSON 序列化。曾经是一个流行的序列化工具,但出于安全性和兼容性的考虑,在新的开发工作中应避免使用它,而转向其他更安全的替代方案,如 JSON 序列化。:在实际应用中,你应该添加适当的错误处理代码(如 try-catch 块),以便处理可能发生的 I/O 错误或其他异常情况。如果你需要不同的编码,可以在创建。
2025-02-06 20:54:12
863
原创 哈希表示例
这个问题的背景设定是为了不在赎金信中暴露字迹,需要从杂志上搜索各个需要的字母,组成单词来表达意思。在Java中,判断两个字符串是否为有效的字母异位词(Anagram),即这两个字符串是否由相同的字符组成,只是字符的排列顺序不同。"两数之和"(Two Sum)是LeetCode上的一个经典算法问题,编号为1,它要求在一个整数数组。该算法的时间复杂度为 O(n^2),因为需要遍历两个数组的组合。中是否存在该补数,如果存在,则将对应的出现次数累加到结果中。中是否存在该补数,如果存在,则找到了两个数,它们的和为。
2025-01-24 17:42:11
949
原创 哈希表和散列表使用场景
是线程安全的,这意味着它可以被多个线程并发访问而不需要额外的同步措施。然而,这种安全性是以牺牲一定的性能为代价的。如果你的应用场景需要多线程环境下的高并发读写操作,那么可能更倾向于使用。如果键已经存在,则更新对应的值;如果不存在,则添加新的键值对。的方式有很多种,包括迭代键集合、条目集或直接使用增强型 for 循环。时,开发者应当考虑应用程序的具体需求,如是否需要线程安全、是否允许。为了保证良好的性能,应该选择合适的初始容量和加载因子。方法根据键来获取相应的值。接口的类之一,它提供了非同步化的键值对映射。
2025-01-22 18:05:45
311
原创 Java哈希表
对于动态变化的数据集来说,随着元素数量的增长,原有的哈希表可能会变得过于拥挤,导致冲突增多,影响性能。哈希表(Hash Table),也称为散列表,是一种高效的数据结构,它通过使用哈希函数将键映射到一个数组中的索引位置,从而实现快速的插入、查找和删除操作。总之,从最初的简单概念到今天高度优化且广泛应用的数据结构,哈希表的发展体现了计算机科学家们不断追求更高效率的努力。散列函数是哈希表的关键组成部分之一,它的作用是将任意长度的输入(预映射,pre-image)转换为固定长度的输出(散列值)。
2025-01-22 18:01:13
898
原创 C#与AI的共同发展
C#与人工智能(AI)的共同发展反映了编程语言随着技术进步而演变,以适应新的挑战和需要。自2000年微软推出C#以来,这门语言经历了多次迭代,不仅成为了.NET平台的主要编程语言之一,还逐渐成为构建各种类型应用程序的强大工具。随着时间推移,特别是在AI领域的崛起背景下,C#展示了其在这一新兴领域中的潜力。
2025-01-18 11:47:46
2344
原创 IFormatProvider 和 ICustomFormatter
和接口是用于实现自定义格式化逻辑的关键组件。这两个接口协同工作,使得开发者可以为数值、日期时间以及其他对象创建特定于应用的字符串表示形式。
2025-01-13 20:20:53
514
原创 C#格式化输出
对于数字类型可以使用多种标准格式说明回复来改变其显示形式,如货币(c)、科学计数法(E)、固定点(F)等;而对于日期时间类型,则有短时期(d)、长日期(D)等不同格式;还可以通过自定义格式字符串来满足更为复杂的需要:数字格式化:结果为2.50结果为00025结果为结果为25.00结果为2.5结果为结果为FF日期时间格式化:当标准格式说明符无法满足特定需要时,我们将可以选择创建自定义格式说明符;
2025-01-13 20:16:34
853
原创 C#格式化输出
无论是通过Insert方法进行字符串插入,还是利用字符串插值(内插字符串)来构建动态字符串,都是十分有用的技术。前者适用于在现有字符串的特定位置添加新内容,而后者则提供了更加灵活和易读的方式来构造包含变量及表达式的字符串。
2025-01-13 20:09:58
977
原创 Java内存与缓存
Java内存管理和缓存使用不仅要求对技术细节有深刻理解,还需要不断试验和优化才能达到理想的效果。通过精心设计和实施上述提到的各项措施,可以在保证性能的同时,维持系统的稳定性和可扩展性。
2025-01-13 11:31:57
1451
原创 Java列表示例
接口最常用的实现之一,它内部使用数组来存储元素,因此对于随机访问具有很高的效率。但是,当涉及到频繁的插入或删除操作时,它的性能可能会受到影响,因为这些操作可能需要移动大量元素以保持索引的一致性。,用于快速创建固定内容的不可变列表。这种方法非常适合于那些不需要改变的集合,因为它提供了一种简洁的方式来定义常量集合,而且由于它是不可变的,所以更加安全。接口,并且基于双向链表的数据结构。这意味着它可以高效地进行插入和删除操作,尤其是在列表的两端。然而,对于随机访问而言,引入了一个新的静态工厂方法。
2025-01-09 20:52:43
596
原创 链表与列表的区别
选择LinkedList还是ArrayList取决于具体的应用需求。理解这两种数据结构的工作原理及其各自的优缺点,可以帮助开发者根据实际情况做出最佳决策。此外,值得注意的是,两者都不是线程安全的实现;如果需要在线程并发环境中使用,必须采取额外措施确保同。
2025-01-09 20:50:02
336
原创 Java列表
直接实例化:例如这是最基本也是最常见的做法。使用静态工厂方法:从JDK 9开始,可以直接使用List.of()这样的静态方法来创建不可变列表。初始化块:利用匿名内部类或者双括号语法来进行一次性初始化,像这样}};不过这种方式并不推荐用于生产环境代码中。转换自数组:借助函数将现有数组转换成列表。Stream API:自从JDK 8引入了流式处理之后,也可以通过来构建列表。List接口及其具体实现类提供了丰富的API来满足各种场景下的需求,无论是简单的数据存储还是复杂的业务逻辑处理,都能找到合适的解决方案。
2025-01-08 19:31:14
1107
原创 LRU(2)
另一种实现方式是构建一个自定义的数据结构,即使用双向链表与哈希表相结合的方式。这里,双向链表用于维护元素的访问顺序,而哈希表则提供了快速查找的能力。每当有新的元素加入或已有元素被访问时,该元素都会被移动到链表的头部,表示它是最近使用的。一旦缓存满了,就需要从链表尾部移除最久未使用的元素。
2025-01-07 21:15:46
614
原创 LRU(1)
LRU是""(最近最少使用)的缩写,它是一种常用的页面置换算法和缓存淘汰策略。当计算机系统的内存或缓存资源有限时,LRU算法根据的历史访问记录来决定哪些数据应该被保留在内存或缓存中,哪些被淘汰。其核心思想是“如果一个数据项在最近一段时间内没有被访问过,那再未来的一段时间内它被访问的可能型也比较小”。因此,当需要腾出空间给新的数据项时,LRU会选择哪些最长时间未被使用的数据项目进行淘汰。
2025-01-07 18:52:48
924
原创 Java链表
在java中,链表可以通过自定义来实现,也可以直接使用类。LinkedList实现了接口,并且提供了双向链接的功能,即每个节点不仅由指向下一个节点的引用,哈有指向前一个节点的引用。这意味着LinkedList不仅可以作为列表使用,还可以作为栈或队列使用,因为它是基于双向链表现实的。data:用于存储实际的数据。next:用于存储向下一个节点的引用;如果是双向链表,则还有一个prev字段用于存储指向前一个节点的引用。
2025-01-06 21:31:22
1321
原创 封送类、结构体和联合体实例
在.NET Framework中,类是引用类型,而结构体是值类型。对于类而言,它们只能通过COM互操作来封送,并且总是作为接口封送。当托管类传递给COM时,互操作封送处理器会自动使用COM代理包装该类,并将由代理生成的类接口传递到COM方法调用。当需要传递这个联合体到非托管代码时,可以直接使用上述定义,因为.NET运行时知道如何正确地封送联合体中的成员。结构体作为值类型,在跨平台调用时也需要适当的封送处理。这段代码展示了如何安全地管理非托管内存,并确保正确地封送结构体给非托管函数。属性来指定布局方式。
2025-01-01 01:00:00
627
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人