自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 收藏
  • 关注

原创 视频前后景分离

前后景分离是一种视频处理技术,用于将运动物体(前景)与静态背景分开。背景减除法通过建立背景模型,检测出与背景不符的区域,从而提取前景。混合高斯模型(MOG)是一种常用的背景减除方法,它通过为每个像素建立多个高斯分布模型,自适应地处理光照变化和阴影。

2025-03-26 16:01:47 477

原创 Mean Shift 图像分割与 Canny 边缘检测教程

Mean Shift 是一种聚类算法,通过寻找图像中颜色相似的区域来实现分割。它非常适合用于场景分割或物体检测等任务。本教程将它与 Canny 边缘检测结合,突出分割区域的边界。

2025-03-26 15:08:31 483

原创 opencv测量线距算法以及深入理解轮廓、采样点与 `pointPolygonTest` 及其在测量线距中的应用

因为两个轮廓的形状可能复杂,采样点的分布也不均匀,单向计算无法保证捕捉到全局最小距离。考虑的是轮廓的连续边界(采样点之间的直线段),而不是仅仅计算到采样点的距离。这也是它在测量线距时更准确的原因,因为它能捕捉到边界上非采样点的贡献。采样点是离散的,无法完全覆盖轮廓的每一个位置。也就是说,轮廓的边界不仅仅是这些采样点本身,还包括它们之间的连线。不在采样点中,但它是轮廓的一部分,在计算距离时可能非常重要。采样点是轮廓的离散表示,OpenCV 使用这些点之间的。并不是采样点,但它是轮廓边界的一部分。

2025-03-18 17:59:11 678

原创 “本地 UTF-8”、“文件保存为 UTF-8”和“命令行参数 `/utf8`”之间的区别

这三个概念在软件开发中涉及不同的层面,理解它们的区别是解决中文编码问题的关键。,否则可能会出现乱码或功能异常。不一定需要“全部统一编码”,但需要。

2025-03-15 09:10:37 819

原创 命令设计模式

命令模式(Command Pattern)是一种行为型设计模式,它将请求或操作封装成一个独立的对象(命令对象)。通过这种方式,发出请求的客户端与执行请求的具体实现解耦,使得系统更灵活。你可以用不同的命令对象对客户端进行参数化,支持延迟执行、撤销操作或任务队列等功能。在你的图像处理场景中,用户可能需要执行一系列操作(如腐蚀、开运算、模板匹配等),并希望在点击“执行”按钮后查看最终结果,同时还能检查中间步骤。命令模式非常适合这种需求,因为它可以将每个图像处理任务封装为命令对象,并通过一个管理器统一执行。

2025-03-13 17:23:38 733

原创 观察者模式(Observer Pattern)

用途:观察者模式用于在对象状态变化时通知多个依赖对象,广泛应用于事件驱动的系统。实现:通过 Subject 管理观察者列表,Observer 定义更新接口,结合动态注册和通知实现松耦合。优势:灵活、可扩展,Subject 和 Observer 可以独立开发。注意:多线程环境下需加锁,内存管理可优化。

2025-03-12 11:37:06 819

原创 OpenCV常用函数以及使用场景

【代码】OpenCV常用函数。

2025-03-08 15:28:05 984

原创 OpenCV GrabCut 图像分割

GrabCut 是一种基于图割(Graph Cut)的交互式图像分割算法。它只需要用户提供少量的前景和背景信息(通常是一个包含前景的矩形框),就能通过迭代优化,实现高质量的前景提取。当鼠标在窗口中发生事件(按下、抬起、移动等)时,OpenCV 会自动调用这个函数。OpenCV 用于图像处理,NumPy 用于数值计算(特别是数组操作)。: 如果按下 Esc 键(ASCII 码为 27),退出循环。如果这个脚本是主程序(而不是被导入的模块),则创建一个。的类,用于封装图像处理和用户交互的逻辑。

2025-03-04 16:30:39 1117

原创 分水岭算法(Watershed Algorithm)教程:硬币分割实例

它将图像视为“地形图”,其中像素的灰度值(或颜色)代表“高度”。算法从预定义的“标记”(markers)开始“注水”,模拟水流从低洼处(标记区域)向周围蔓延的过程。当来自不同标记区域的“水”相遇时,就形成“分水岭”(watersheds),也就是分割边界。通过结合“确定是背景”、“确定是前景”和“未知区域”的信息,它可以有效地将图像分割成不同的区域。距离变换在其中起到了关键作用,它帮助我们确定“确定是前景”的区域。理解分水岭算法的关键在于理解标记图像的作用,以及算法如何模拟“注水”过程来找到分割边界。

2025-03-03 17:44:58 774

原创 装饰器模式

装饰器模式是一种非常有用的设计模式,它可以让你在不修改现有类的情况下,动态地扩展对象的功能。但是,过度使用装饰器模式可能会增加系统的复杂性,因此需要谨慎使用。假设我们要创建一个简单的咖啡销售系统。我们可以定义不同类型的咖啡(例如,浓缩咖啡、深度烘焙咖啡),还可以添加各种配料(例如,牛奶、摩卡、豆浆、奶泡)。(Wrapper) 对象来围绕原始对象,从而在不改变原始对象接口的情况下扩展其功能。装饰器模式提供了一种比创建子类更灵活的方式来扩展对象的功能。将责任(功能)添加到对象上,而无需修改其原始类。

2025-02-21 15:52:37 652

原创 单例设计模式

单例模式是一种简单但非常有用的设计模式。在选择使用单例模式时,要权衡其优缺点,并根据具体情况选择合适的实现方式。在 C++11 及更高版本中,推荐使用 Meyers Singleton 或。局部静态变量的特性保证了线程安全和延迟初始化, 且实现简单, 推荐使用。: C++11 提供的函数,可以保证传入的函数只会被执行一次。单例模式是一种创建型设计模式,它确保一个类。来实现线程安全的懒汉式单例。来访问这个唯一的实例。

2025-02-21 15:51:26 442

原创 工厂设计模式

一个产品族通常包含多个不同类型的产品,这些产品之间是相关的或一起使用的。客户端不需要知道具体产品类的名称,只需要知道工厂类和类型标识符即可。建造者模式将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。简单工厂模式定义一个工厂类,该工厂类根据传入的参数(通常是类型标识符)来创建。它定义一个抽象的工厂接口,每个具体产品都有一个对应的具体工厂类来创建。换句话说,当对象的构建过程比较复杂,并且希望将构建过程与对象的表示分离时。假设我们要创建一个简单的图形绘制程序,可以绘制圆形和矩形。

2025-02-21 15:45:29 612

原创 适配器模式

是一种结构型设计模式,它允许将一个类的接口转换成客户端所期望的另一种接口。适配器模式使得原本由于接口不兼容而不能一起工作的类可以一起工作。一个已有的类(或对象),并提供客户端所期望的接口。客户端通过适配器与已有类进行交互,而无需修改已有类的代码。总的来说,适配器模式是一种非常有用的设计模式,它可以帮助你解决接口不兼容的问题,提高代码的复用性和灵活性。适配器类同时继承目标接口和适配者类。适配器类包含一个适配者对象的。适配器模式的核心思想是创建一个。解决现有类之间的接口不兼容问题。现在,我们有一个新的。

2025-02-21 15:37:09 538

原创 Qt开发中彻底解决中文乱码问题

中文乱码问题主要源于编码不一致需要同时设置控制台和Qt应用程序的编码确保项目文件和环境配置的编码一致文件操作时注意指定正确的编码。

2025-01-08 14:47:27 1426

原创 海康VMC++封装

【代码】海康VMC++封装。

2025-01-06 10:56:27 207

原创 VS只生成DLL不生成lib解决方法

添加模块定义文件:通过添加一个.def文件并指定导出的函数,可以确保项目正确生成.lib文件。删除.def文件:添加并生成.lib文件后,.def文件可以删除,之后的编译会继续生成.lib文件。

2025-01-02 09:15:05 1189 2

原创 RSA加密算法详解:从基础原理到实际应用

RSA(Rivest–Shamir–Adleman)是一种非对称加密算法,由罗纳德·李维斯特(Ron Rivest)、阿迪·沙密尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)于1977年共同开发。由于其基于大数质因数分解的数学难题,RSA被广泛应用于数据加密、数字签名和密钥交换等领域。非对称加密的核心在于使用一对密钥:公钥(Public Key)和私钥(Private Key)。公钥用于加密或验证签名,可以公开分发;私钥用于解密或生成签名,必须严格保密。

2024-12-13 10:50:13 1192

原创 VS集成vcpkg

命令功能安装一个库卸载一个库更新所有库vcpkg list列出已安装的库搜索库将 Vcpkg 集成到 Visual Studio 中。

2024-12-07 14:23:00 992

原创 如何在VS2015中解决Qt Designer无法打开的问题

在VS2015环境下,配置Qt5.7.0后,有时会遇到在解决方案资源管理器中双击*.ui文件时没有反应的情况。

2024-10-31 16:13:49 545

原创 VS上dump文件的创建与使用以及封装

【代码】VS上dump文件的创建与使用以及封装。

2024-09-26 16:28:57 325

原创 try捕获异常用法

使用try语句可以有效处理异常,防止程序崩溃。通过捕获具体的异常类型,可以提高错误处理的针对性,确保程序能够优雅地应对各种错误情况。

2024-09-24 21:34:22 250

原创 关于git管理分支问题

重置(Reset):用于回到某个提交点,可以选择保留或丢弃更改。还原(Revert):通过创建一个新的反向提交来撤销特定提交的更改。挑拣(Cherry-pick):选择性地将其他分支的某个提交应用到当前分支。签出(Checkout):切换到不同的分支或特定的提交,查看或修改代码。

2024-09-19 11:45:19 1818 1

原创 QT多线程使用

简便性提供了一个更高层次的接口,无需定义任务类。灵活性和QRunnable提供了更大的灵活性和控制,但需要更多的代码和设置。

2024-09-11 15:16:06 1062

原创 spdlog库封装

【代码】spdlog库封装。

2024-07-19 15:39:45 652 2

原创 vs2015 使用spdlog编译失败以及注意事项

使用spdlog1.8版本。

2024-07-19 14:02:07 348

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除