- 博客(174)
- 收藏
- 关注
原创 c++ 建造者模式
这种模式将对象的构建过程与其表示分离,允许用户通过相同的构建过程创建不同的表示。主要解决在软件系统中,有时候面临着"一个复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。例如,在软件开发中,创建一个复杂的数据库连接工厂可能需要指定不同的数据库类型、驱动程序、连接字符串、身份验证信息等。2.提供具体建造者类:具体实现抽象建造者各个部件的接口。扩展性好,各个具体的建造者相互独立,有利于系统的解耦。
2024-07-11 23:14:15
795
原创 c++ 工厂模式
工厂模式(FactoryPattern)是设计模式中的一种,属于创建型模式。它的核心思想是为了解耦对象的创建过程与使用过程,让代码更加灵活,易于扩展和维护。工厂模式通过引入一个工厂类来负责对象的创建,而客户端代码只需要与这个工厂类交互,无须关心具体的对象创建细节。封装性:隐藏了对象创建的具体逻辑,客户端代码不需要知道对象是如何被创建出来的。开放封闭原则:当需要添加新的产品时,只需要增加一个新的具体产品类和修改工厂类(或新增一个工厂子类),不需要修改现有代码,符合软件设计的开放封闭原则。
2024-06-18 22:44:42
859
原创 c++模板模式
模板模式(Template Method Pattern)是一种行为设计模式,它定义了一个操作中的算法骨架,将某些步骤的具体实现延迟到子类中。模板模式使得子类可以在不改变算法结构的情况下,重新定义算法的某些步骤,从而实现代码复用和扩展性。存在一组相似的操作:当有一组操作拥有相同的算法结构,但是某些步骤的实现细节各不相同的时候,可以使用模板模式来定义这些操作的通用部分,并将变化的部分留给子类去实现。
2024-06-16 22:23:30
542
原创 c++ 单例模式
单例模式(SingletonPattern)是一种常用的程序设计模式,属于创建型设计模式的一种。它的核心思想在于控制类的实例化过程,确保在任何情况下,对于特定类来说,在整个应用程序中只存在一个实例,并提供一个全局访问点来获取这个实例。这样做可以确保共享资源的有效管理,减少系统开销,以及在需要全局访问和协调控制时提供便利。唯一性:确保一个类只有一个实例。全局访问点:提供一个全局访问的方法,让其他对象可以轻松地获取到这个唯一的实例。
2024-06-16 00:26:19
767
2
原创 Qt串口异步通信案例(主机线程)
通常,采集CAN总线数据时,你的设备(尤其是如果它负责发起数据读取操作)会更适合设计成一个主机线程。即使是在等待数据到达的阶段,也是在主控逻辑中通过循环或事件驱动的方式实现,保持对串口数据的监听和处理。在智能工厂的生产线上,有一套自动化测试系统,该系统需要定期向各个测试工位的嵌入式控制器发送指令,收集测试结果,并根据结果调整生产线的速度或发出警报。这种方式允许更精细的控制何时继续执行下一个事务,提高了资源利用效率。MasterThread (主机线程) 示例。MasterThread(主机线程)
2024-05-30 22:48:29
377
原创 MFC 发起 HTTP Post 请求 发送MES消息
首先获取WebApi 的Token。生成的JSON 数据大致如下。执行请求Token函数。
2024-05-28 10:15:33
615
原创 Halcon 深度学习缺陷检测
必须要有Good或者是OK文件夹做标注,剩下两个为逻辑异常和结构异常。已经用 DLT做好标注,训练,和评估,只需修改推理代码。点击检查选择good可以获取所有good图像的照片。> 点击创建训练点击保存更改。通过阈值可以调整判定的区间。滑动热图可以看出误判结果。设置完成后点击开始训练。
2024-05-03 13:58:59
784
原创 Halcon 检测物体定位点
Halcon 中的区域Image : 图像 (input_object): 类型可以是 (多通道-) 图像数组,对象类型为字节、方向、循环、int1、int2、uint2、int4、int8、实数、复数或矢量场。这是输入图像。Domain : 域 (output_object): 类型是区域数组,对象类型。这是输入图像的定义域。
2024-04-30 21:52:47
402
原创 31 OpenCV 距离变换和分水岭算法
2. 使用filter2D与拉普拉斯算子实现图像对比度提高,sharp。1.将白色背景变成黑色-目的是为后面的变换做准备。5. 对距离变换结果进行归一化到[0~1]之间。7. 腐蚀得到每个Peak - erode。8.发现轮廓 – findContours。9. 绘制轮廓- drawContours。3. 转为二值图像通过threshold。6. 使用阈值,再次二值化,得到标记。10.分水岭变换 watershed。11. 对每个分割区域着色输出结果。
2024-04-28 22:27:23
546
1
原创 27 OpenCV 凸包
什么是凸包(Convex Hull),在一个多变形边缘或者内部任意两个点的连线都包含在多边形边界或者内部。包含点集合S中所有点的最小凸多边形称为凸包。
2024-03-21 21:48:01
421
原创 Halcon 路标牌识别
determine_area_of_interest (Image, Rectangle, AreaOfInterest) 函数。
2024-03-21 17:01:21
449
原创 25 OpenCV模板匹配算法
模板匹配就是在整个图像区域发现与给定子图像匹配的小块区域。所以模板匹配首先需要一个模板图像T(给定的子图像)另外需要一个待检测的图像-源图像S工作方法,在带检测图像上,从左到右,从上向下计算模板图像与重叠子图像的匹配度,匹配程度越大,两者相同的可能性越大。其中 TM_SQDIFF 和 TM_SQDIFF_NORMED 方法的相似度值越小代表匹配程度越高,而其他方法则是相反,相似度值越大代表匹配程度越高。
2024-03-19 21:54:10
375
原创 23 OpenCV 直方图比较
在计算直方图相似度时,常用的方法包括交叉相关性(Correlation)、卡方(Chi-Square)、巴氏距离(Bhattacharyya distance)等。这些方法可以帮助我们量化图像之间的相似性,从而在图像检索、匹配和分类等领域发挥重要作用。直方图比较的目的是衡量两幅图像之间的相似度或差异度。通过计算图像的颜色直方图并对其进行归一化处理,可以得到描述图像颜色分布的特征向量。然后,通过比较这些特征向量,我们可以评估两幅图像在颜色分布上的相似程度。
2024-03-18 21:00:44
518
原创 22 OpenCV 直方图计算
归一化函数的作用是将数据转换为特定范围内的值,通常是[0, 1]或者[-1, 1]。这种转换可以消除不同特征之间的量纲影响,使得不同特征之间具有可比性,有利于模型的训练和优化。归一化还有助于加快模型的收敛速度,提高模型的稳定性和准确性。上述直方图概念是基于图像像素值,其实对图像梯度、每个像素的角度、等一切图像的属性值,我们都可以建立直方图。这个才是直方图的概念真正意义,不过是基于图像像素灰度直方图是最常见的。
2024-03-17 21:22:02
508
原创 21 OpenCV 直方图均衡化
直方图均衡的目的是增强图像的对比度,使得图像中的各个区域的亮度分布更加均匀,从而提高图像的视觉质量。通过对图像的灰度直方图进行调整,将原始图像中灰度值分布不均匀的部分拉伸开来,使得整个灰度范围内的像素值都能得到充分利用,达到增强图像细节、改善图像质量的效果。直方图均衡也常用于图像增强、图像压缩、图像分割等领域。图像直方图,是指对整个图像像在灰度范围内的像素值(0~255)统计出现频率次数,据此生成的直方图,称为图像直方图-直方图。直方图反映了图像灰度的分布情况。
2024-03-17 10:26:10
566
原创 17 OpenCv Canny算子
高斯模糊 - GaussianBlur灰度转换 - cvtColor计算梯度 – Sobel/Scharr非最大信号抑制高低阈值输出二值图像。
2024-03-13 21:31:41
490
原创 16 OpenCV Laplance算子
在二阶导数的时候,最大变化处的值为零即边缘是零值。导数计算,依据此理论我们可以计算图像二阶导数,提取边缘。
2024-03-12 20:59:10
502
原创 15 OpenCV Sobel算子
是离散微分算子(discrete differentiation operator),用来计算图像灰度的近似梯度Soble算子功能集合高斯平滑和微分求导又被称为一阶微分算子,求导算子,在水平和垂直两个方向上求导,得到图像X方法与Y方向梯度图像水平梯度垂直梯度最终图像梯度。
2024-03-11 21:32:11
443
原创 14 OpenCv边缘处理
图像卷积的时候边界像素,不能被卷积操作,原因在于边界像素没有完全跟kernel重叠,所以当3x3滤波时候有1个像素的边缘没有被处理,5x5滤波的时候有2个像素的边缘没有被处理。在卷积开始之前增加边缘像素,填充的像素值为0或者RGB黑色,比如3x3在 四周各填充1个像素的边缘,这样就确保图像的边缘被处理,在卷积处理之。
2024-03-10 10:27:30
444
原创 Halcon局部可变形模板匹配
find_local_deformable_model 找到图像中局部可变形模型的最佳匹配。get_deformable_model_contours 返回可变形模型的轮廓表示形式。gen_ellipse_contour_xld 创建一个对应于椭圆弧的XLD轮廓。create_local_deformable_model 创建局部可变形模板。vector_field_to_real 将矢量场图像转换为两个实值图像。gen_region_contour_xld 从XLD轮廓创建一个区域。
2024-03-09 14:04:13
836
原创 Halcon 比较模板与实物的不同筛选残次品
inspect_cap (rImage, RegionROI, WindowHandle, ModelID, VariationID, RowModel, ColumnModel, BackgroundGVModel, ForegroundGVModel) 比较灰度值的不同。get_variation_model 返回变量模型用于图像比较的图像,返回训练后的图片和差异图像。compare_ext_variation_model 比较图片与模板图片的不同。sobel_amp 索贝尔算子检测边缘(振幅)
2024-03-09 10:45:38
881
原创 13 OpenCv自定义线性滤波
把kernel放到像素数组之上,求锚点周围覆盖的像素乘积之和(包括锚点),用来替换锚点覆盖下像素点值称为卷积处理。
2024-03-08 21:33:56
515
原创 12 OpenCv阈值处理
实际上是基于图片亮度的一个黑白分界值,默认值是50%中性灰,即128,亮度高于128(<50%的灰)的会变白,低于128(>50%的灰)的会变黑。为了从一副图像中提取出我们需要的部分,应该用图像中的每一个像素点的灰度值与选取的阈值进行比较,并作出相应的判断。(注意:阈值的选取依赖于具体的问题。左下方的图表示图像像素点Src(x,y)值分布情况,蓝色水平线表示阈值。左下方的图表示图像像素点Src(x,y)值分布情况,蓝色水平线表示阈值。左下方的图表示图像像素点Src(x,y)值分布情况,蓝色水平线表示阈值。
2024-03-07 22:16:09
711
原创 11 OpenCV 上采样与降采样,高斯不同(DOG)
定义:就是把同一张图像在不同的参数下做高斯模糊之后的结果相减,得到的输出图像。称为高斯不同(DOG)高斯不同是图像的内在特征,在灰度图像增强、角点检测中经常用到。
2024-03-07 21:33:30
548
原创 Halcon 颜色检测
add_samples_image_class_mlp 将图像中的训练样本添加到多层感知器的训练数据中。create_color_trans_lut — 创建RGB颜色空间到任意颜色空间的图像转换查找表。create_class_lut_gmm 使用高斯混合模型创建查找表,对字节图像进行分类。classify_image_class_mlp 使用多层感知器对图像进行分类。add_samples_image_class_gmm 添加样本。classify_image_class_lut 颜色分类表。
2024-03-07 10:18:37
1290
Qt QtableWidget自定义表格
2023-11-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人