<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[AP1005834的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/AP1005834</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; AP1005834]]></copyright><item><title><![CDATA[一种无需训练缺陷数据生成算法--O2MAG]]></title><link>https://blog.youkuaiyun.com/AP1005834/article/details/167391365</link><guid>https://blog.youkuaiyun.com/AP1005834/article/details/167391365</guid><author>AP1005834</author><pubDate>Sat, 10 Oct 2026 18:32:31 +0800</pubDate><description><![CDATA[O2MAG是一种无需训练的少样本异常图像生成方法，仅需一张参考异常图像及其掩码、一张正常图像及目标区域，即可在推理阶段通过注意力控制实现真实感异常迁移。该框架不依赖模型微调，基于Stable Diffusion v1.5，支持多类别缺陷合成。代码配置需准备特定目录结构：mvtec_data存放真实缺陷图与掩码（PNG），data_agument存正常图像（PNG），results_final_fewshot输出生成结果，name-mvtec-my.txt定义类别组合。所有图像均为512×512分辨率，确保生]]></description><category></category></item><item><title><![CDATA[图像增强算法总结]]></title><link>https://blog.youkuaiyun.com/AP1005834/article/details/167374893</link><guid>https://blog.youkuaiyun.com/AP1005834/article/details/167374893</guid><author>AP1005834</author><pubDate>Fri, 09 Oct 2026 15:03:57 +0800</pubDate><description><![CDATA[本文针对光照不均或过曝过暗的工业图像，对比实验了直方图均衡（HE）、CLAHE、Gamma矫正与平场矫正四种增强方法。结果表明，HE全局拉伸易引入噪声，CLAHE通过局部自适应处理提升细节且可控；Gamma矫正可灵活调节明暗，适合暗区增强；平场矫正则有效消除系统性光照差异。结合使用CLAHE与Gamma可显著提升缺陷检测效果，适用于复杂光照场景下的图像预处理。]]></description><category></category></item><item><title><![CDATA[缺陷图像合成方法]]></title><link>https://blog.youkuaiyun.com/AP1005834/article/details/165116716</link><guid>https://blog.youkuaiyun.com/AP1005834/article/details/165116716</guid><author>AP1005834</author><pubDate>Sat, 12 Sep 2026 14:59:58 +0800</pubDate><description><![CDATA[本章实验缺陷数据合成方法，目的是为了将常见的一些缺陷能够和正样本图像融合，增加缺陷数据数量，便于后续有监督模型学习训练，主要使用cv2 的泊松融合和高斯羽化融合做无缝融合。所用缺陷图像和 背景图像如下所示，并且缺陷图像里的缺陷，使用 labelme 绘制多边形区域（保存在同名json文件），使缺陷能够更精确的抠下，不包括冗余部分。如果背景图像为彩色图像，则需要把 缺陷图像的各个通道的色彩迁移至与背景图像接近，再使用 泊松融合或高斯融合做融合。]]></description><category></category></item><item><title><![CDATA[anomalib--dinomaly算法onnx C++部署]]></title><link>https://blog.youkuaiyun.com/AP1005834/article/details/160054385</link><guid>https://blog.youkuaiyun.com/AP1005834/article/details/160054385</guid><author>AP1005834</author><pubDate>Sat, 11 Apr 2026 16:57:22 +0800</pubDate><description><![CDATA[需要注意下载的版本和自己的 cuda cudnn 相对应， 我的是 cuda12.4+cudnn 9.2+onnxruntime-win-x64-gpu-1.20.1。然后还需要到 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4\bin 找到。VS2022 需要配置好 opencv、cuda12.4、onnxruntime-win-x64-gpu-1.20.1。运行代码 输出了 整体异常分数值、热力图、预测的二值掩码图。]]></description><category></category></item><item><title><![CDATA[yolov8-pos/yolov11-pos openvino C++部署]]></title><link>https://blog.youkuaiyun.com/AP1005834/article/details/149440242</link><guid>https://blog.youkuaiyun.com/AP1005834/article/details/149440242</guid><author>AP1005834</author><pubDate>Sat, 19 Jul 2025 17:38:50 +0800</pubDate><description><![CDATA[但是这里由于硬件平台为工控机，windows系统，考虑到工控机无GPU，则需使用openvino 进行加速，openvino 是英特尔开发的针对CPU的加速模型推理的库，在Python\C++\C#,均有相应接口。可把摄像头检测到的草莓边框和2关键点、果柄边框给显示出来，我的CPU是 12400K ， FPS还挺高，有40+，不过是n模型运行快，换成s模型，速度则会降至20帧左右。省略，版本4点几的就行，我用的是4.8.0 ，可以参看，需要配置 Release版的。下面Opencv的，看自己的路径。]]></description><category></category></item><item><title><![CDATA[yolov8-pos/yolov11-pos 训练]]></title><link>https://blog.youkuaiyun.com/AP1005834/article/details/149422662</link><guid>https://blog.youkuaiyun.com/AP1005834/article/details/149422662</guid><author>AP1005834</author><pubDate>Thu, 17 Jul 2025 17:36:27 +0800</pubDate><description><![CDATA[2*3, 也即2个点，每个点有3个数值， x , y , 属性（无效0，不可见1，可见2），无效就是这个点不在图像中了，不可见就是点在图像中，但是被遮挡，可见就是点在图像中，且未被遮挡。我的识别对象主要有草莓熟果、果梗，这2类对象，关键点数量为2，草莓的头和尖，果梗虽然不识别关键点，但是也必须有2个点，这里我就取边框的  （中心点x坐标，边框的y坐标top坐标）和（中心点x坐标，边框的y坐标bottom坐标 ） 像是下面的。训练完成后，将得到pt格式权值文件，onnx格式权值文件。]]></description><category></category></item><item><title><![CDATA[yolo8,10,11之处理不平衡类别问题]]></title><link>https://blog.youkuaiyun.com/AP1005834/article/details/149016870</link><guid>https://blog.youkuaiyun.com/AP1005834/article/details/149016870</guid><author>AP1005834</author><pubDate>Fri, 04 Jul 2025 18:35:48 +0800</pubDate><description><![CDATA[少数类的框是独立存在于图片中，则可通过颜色、亮度、几何变换等方法人为增加少数类的样本数，使少数类的框的数量 和多数类的框数量上保持平衡。使用 yolo11进行目标检测时，发现训练数据集存在类别数量不平衡的情况，查阅了一下资料，可采取以下方法。修改  loss.py文件中的 bce初始化权值，少数类赋予更大权值，使模型更关注少数类。]]></description><category></category></item><item><title><![CDATA[C# yolo10使用onnx推理]]></title><link>https://blog.youkuaiyun.com/AP1005834/article/details/143386833</link><guid>https://blog.youkuaiyun.com/AP1005834/article/details/143386833</guid><author>AP1005834</author><pubDate>Tue, 12 Nov 2024 16:21:07 +0800</pubDate><description><![CDATA[本篇总结C#端使用yolo10的onnx文件做模型推理，主要使用Microsoft.ML.OnnxRuntime.Gpu这个库。需要注意的是Microsoft.ML.OnnxRuntime 和 Microsoft.ML.OnnxRuntime.Gpu 这2库只装1个就行，CPU就装前者，反之后者。然后需要注意系统安装的CUDA版本、CUDNN、OnnxRuntime这3者的版本一致，可在这里查询。这里使用的是 Microsoft.ML.OnnxRuntime.Gpu 版本 1.15.1版本。]]></description><category></category></item><item><title><![CDATA[C#--DirectShowLib 关闭自动白平衡和自动曝光时间]]></title><link>https://blog.youkuaiyun.com/AP1005834/article/details/140892380</link><guid>https://blog.youkuaiyun.com/AP1005834/article/details/140892380</guid><author>AP1005834</author><pubDate>Sat, 03 Aug 2024 17:41:06 +0800</pubDate><description><![CDATA[因项目需要需关闭相机自身的自动白平衡和自动曝光时间，统统设定为恒定值，开始实验了opencvCvSharp，但是不起作用，故实验了更底层的 DirectShowLib ，可成功关闭相机自带的自动白平衡和自动曝光时间，再使用opencvCvSharp 读取摄像头]]></description><category></category></item><item><title><![CDATA[C# OpenCvSharp 打开4K高清摄像头]]></title><link>https://blog.youkuaiyun.com/AP1005834/article/details/140886127</link><guid>https://blog.youkuaiyun.com/AP1005834/article/details/140886127</guid><author>AP1005834</author><pubDate>Sat, 03 Aug 2024 10:11:36 +0800</pubDate><description><![CDATA[整了个1200w像素的usb摄像头，使用 OpenCvSharp读取，读取和设置分辨率代码耗时居然10几秒，查询资料发现，必须对VideoCapture进行设置，使用DSHOW模式打开，并且设置分辨率代码下必须增加 指定MJPG编码格式.效果丝滑，基本流畅...]]></description><category></category></item><item><title><![CDATA[Sahi+Yolov10]]></title><link>https://blog.youkuaiyun.com/AP1005834/article/details/140229200</link><guid>https://blog.youkuaiyun.com/AP1005834/article/details/140229200</guid><author>AP1005834</author><pubDate>Sat, 06 Jul 2024 17:18:31 +0800</pubDate><description><![CDATA[sahi 目前支持yolo5\yolo8\mmdet\detection2 等等算法，本篇主要通过实验onnx加载模型的方式使sahi支持yolov10。修改 _post_process 函数 ， 主要是由于yolov8 和yolov10 输出 shape有所不同，yolov10没有nms。首先使用  conda创建虚拟环境，配置好yolov10环境，然后 pip 将sahi 安装上。将yolov10 模型导出为 onnx格式文件，命令窗cd 至 模型文件所在目录 执行。]]></description><category></category></item><item><title><![CDATA[C# 实现去除多行文本框光标闪烁，并设置行距]]></title><link>https://blog.youkuaiyun.com/AP1005834/article/details/139840149</link><guid>https://blog.youkuaiyun.com/AP1005834/article/details/139840149</guid><author>AP1005834</author><pubDate>Fri, 21 Jun 2024 09:33:11 +0800</pubDate><description><![CDATA[本篇主要通过继承RichTextBox 的方式实现去除多行文本框的光标闪烁，以及能够设置行距大小，这是因为C#提供的TextBox 和 RichTextBox 本身无这样的功能。去除多行文本框的光标闪烁，以及能够设置行距大小，这样看起来就更为美观简洁，如果只是用于显示多行文字。封装 RichTextBox 为CustomTextBox。]]></description><category></category></item><item><title><![CDATA[C#和python端通信之使用共享内存]]></title><link>https://blog.youkuaiyun.com/AP1005834/article/details/139833834</link><guid>https://blog.youkuaiyun.com/AP1005834/article/details/139833834</guid><author>AP1005834</author><pubDate>Thu, 20 Jun 2024 16:15:55 +0800</pubDate><description><![CDATA[之后读取图像，并创建和写入至一个大小为960*640*4的共享内存，名为cam1，存放一个byte[]变量 , 然后 flag1 写入1，循环读取done内存，若为1，则将result 内存读取出为string 并显示textBox1。循环读取flag1共享内存，若为1，则读取cam1数据，还原为图像数据，将2写入flag1，并将json字符串data写入result内存区，将1写入done，显示图像数据。创建了一个大小为1的共享内存，名为flag1，存放一个byte变量，初始写入0。]]></description><category></category></item><item><title><![CDATA[yolov10打包为exe]]></title><link>https://blog.youkuaiyun.com/AP1005834/article/details/139825758</link><guid>https://blog.youkuaiyun.com/AP1005834/article/details/139825758</guid><author>AP1005834</author><pubDate>Thu, 20 Jun 2024 14:17:36 +0800</pubDate><description><![CDATA[pyinstaller打包指令不要用 -F ，-F是打包为一整个exe，容易出现问题，使用以下指令。首先下载官方代码至本机，并使用conda创建虚拟环境，并安装好yolov10所需库。下载官方模型权重 yolov10m.pt ，并在根目录下创建推理代码。打包将在dist文件夹下生成exe,以及相应独立包文件，运行exe。本节实验将官方yolov10推理程序打包为exe运行。（3）安装pyinstall ，并执行打包指令。打包过程，可能会被防火墙拦截，报病毒错误。接下来将该代码打包为exe,]]></description><category></category></item><item><title><![CDATA[yolov10--C#接口]]></title><link>https://blog.youkuaiyun.com/AP1005834/article/details/139779710</link><guid>https://blog.youkuaiyun.com/AP1005834/article/details/139779710</guid><author>AP1005834</author><pubDate>Tue, 18 Jun 2024 18:39:14 +0800</pubDate><description><![CDATA[该原始模型，需要被转换为openvinocsharp所支持的模型格式，为此需要建立一个yolov10的python环境，使用conda创建，requirements.txt 为 yolov10官方代码下的所需包。这里为了演示，使用官方yolov10m模型（其他大小的模型同理）做演示，可从下方下载，当然也可以是自己训练好的模型。运行代码，可以得到统计的代码加载、预处理、推理的运行时间，并且得到识别结果，类别号、置信度、以及位置。在该创建好的虚拟环境，cd 至下载好的yolov10m.pt 所在目录，执行。]]></description><category></category></item><item><title><![CDATA[python--修改sys.path引用包]]></title><link>https://blog.youkuaiyun.com/AP1005834/article/details/136250930</link><guid>https://blog.youkuaiyun.com/AP1005834/article/details/136250930</guid><author>AP1005834</author><pubDate>Fri, 23 Feb 2024 11:18:27 +0800</pubDate><description><![CDATA[遇到个坑，如果把python代码放到一个文件夹file，并在该文件夹同级目录的a.py文件引用该文件夹file里的b.py，可以在a.py 的开头使用 sys.path 将 file 的路径导入，这样 b.py 可找到原先的引用关系。]]></description><category></category></item><item><title><![CDATA[halcon 缺陷检测--形状匹配+差分]]></title><link>https://blog.youkuaiyun.com/AP1005834/article/details/135389775</link><guid>https://blog.youkuaiyun.com/AP1005834/article/details/135389775</guid><author>AP1005834</author><pubDate>Thu, 04 Jan 2024 18:06:47 +0800</pubDate><description><![CDATA[本篇主要总结使用halcon 做缺陷检测的一个常用思路，当一张图片拍摄多个待检测工件，常用方法是由预先建立好的模版图像，采用 形状匹配+查分方法抠下每个工件，逐个检测。并且可以把每个茶杯使用眼膜仿射变换到各个匹配好的茶杯位置，并由reduce_domain 抠取下来保存在 RegionWaits 中。取第一个茶杯ROI作为模版，提取边缘作为形状匹配对的模版。代码是对一张有10个茶杯的图片进行演示。形状匹配比灰度值匹配要更为可靠。最后将边缘匹配到各个茶杯的效果。]]></description><category></category></item><item><title><![CDATA[C++ windows TCP和UDP通信学习]]></title><link>https://blog.youkuaiyun.com/AP1005834/article/details/127091142</link><guid>https://blog.youkuaiyun.com/AP1005834/article/details/127091142</guid><author>AP1005834</author><pubDate>Thu, 30 Nov 2023 18:24:04 +0800</pubDate><description><![CDATA[服务端，相比较于TCP ，UDP客户端无需 connect ，服务端也无需accept ，socket套接字初始化，TCP的是 SOCK_STREAM 而UDP的是 SOCK_DGRAM，UDP接收和发送用的是recvfrom 和 sendto ， TCP用的是recv和send。本章主要总结 C++ windows 下tcp和 udp通信的一些要点。可参考两张简单的通信流程图。（1）tcp的通信过程。（2）UDP的通信过程。]]></description><category></category></item><item><title><![CDATA[python--tornado服务]]></title><link>https://blog.youkuaiyun.com/AP1005834/article/details/131461216</link><guid>https://blog.youkuaiyun.com/AP1005834/article/details/131461216</guid><author>AP1005834</author><pubDate>Fri, 30 Jun 2023 17:58:30 +0800</pubDate><description><![CDATA[Tornado是一个基于非阻塞I/O的Web框架，具有可以处理大量并发连接，适用于高并发的场景的高性能，轻量级和异步支持的优点。下面的client端向分别向2个服务发送get请求和post请求，服务将处理请求并返回。本篇主要展示了使用 tornado http post 和 get 服务。tornado http post 和 get 服务。]]></description><category></category></item><item><title><![CDATA[python-注册nacos服务]]></title><link>https://blog.youkuaiyun.com/AP1005834/article/details/131459531</link><guid>https://blog.youkuaiyun.com/AP1005834/article/details/131459531</guid><author>AP1005834</author><pubDate>Thu, 29 Jun 2023 17:22:39 +0800</pubDate><description><![CDATA[Nacos（Naming and Configuration Service）是一个用于实现服务注册和发现的开源项目。Nacos注册服务的主要作用是帮助微服务架构中的各个服务实例进行注册和发现，以便于服务之间的通信和协作，另外，也可以在nacos上简历一些配置，服务可以获取配置，便于配置的修改管理。本篇主要是python 登陆nacos平台，对grpc服务（也可以是http服务）注册的示例。]]></description><category></category></item></channel></rss>