自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 OpenCV 阈值处理

阈值处理是将转换为二值图像的核心技术,通过设定阈值将像素分为两类(如前景/背景)。

2025-08-15 18:03:32 266

原创 OpenCV 形态学操作

参数/属性膨胀 (cv2.dilate腐蚀 (cv2.erode核心功能扩展图像中的白色区域(前景)缩小图像中的白色区域(前景)工作原理用核覆盖区域内的最大像素值替换中心像素值用核覆盖区域内的最小像素值替换中心像素值关键参数输入图像二值图像(如Canny边缘结果)同膨胀核 (kernel结构元素(核矩阵),支持形状:•(矩形)•(椭圆)•(十字形)同膨胀迭代次数 (iterations值越大,白色区域扩展越显著值越大,白色区域缩减越显著核尺寸影响核尺寸越大(如(7,7)

2025-08-14 18:04:59 340

原创 OpenCV Canny 边缘检测

【代码】OpenCV Canny 边缘检测。

2025-08-14 17:08:47 260

原创 OpenCV 高斯模糊降噪

【代码】OpenCV 高斯模糊。

2025-08-14 16:54:37 182

原创 gunicorn + flask 处理高并发请求

​​Flask:局限于单线程 WSGI 应用框架,默认仅能顺序处理请求,无法直接并发。Gunicorn:多进程模型​​,通过预派生(pre-fork)机制启动多个 Worker 进程(-w参数),每个 Worker 独立处理请求,充分利用多核 CPU。

2025-08-13 11:50:27 384

原创 进程、线程、协程的概念

本文比较了进程、线程和协程三种执行单元的特性。进程是操作系统分配资源的最小单位,具有独立性和高稳定性;线程是CPU调度的最小单位,共享进程资源但开销较低;协程是用户态轻量级线程,由程序自身调度,适合高并发I/O任务。三者在资源分配、开销和适用场景上各有特点,可形成层级关系:一个进程包含多个线程,每个线程又可运行多个协程。

2025-08-12 15:06:24 179

原创 PaddlePaddle 模型训练技巧

损失函数中,针对不同类别使用不同的权重,可以有效解决数据类别不均衡的问题。语义分割常见的损失函数,比如 CrossEntropyLoss 和 DiceLoss,都支持设置权重。举例如下,如果背景和前景像素分别标注为 0 和 1,则可以在 CrossEntropyLoss 字段中设置 weight,分别表示对应下标类别的权重大小。注意,weight 的长度需要等于类别数。coef 是损失函数外部参数。

2025-08-12 14:53:10 202

原创 PaddleOCR 调参

det_db_unclip_ratio 为 文本框扩展比例​​:调整框大小(值越大框越宽松)。det_db_box_thresh 为文本框保留阈值​​,过滤低置信度检测框。det_db_thresh 为 二值化阈值​​,控制文本区域分割灵敏度。drop_score 为 ​​识别结果过滤阈值​​,低于此值的结果丢弃。use_angle_cls 为​​是否膨胀二值图​​,连接断裂文本区域。

2025-08-08 15:18:52 165

原创 PaddleOCR 数据增强预处理

ocr 检测和识别模型训练完成之后,通过 api 脚本调用测试,发现文字识别的性能很差。但是用官方的 predict_system,py 脚本调用模型却没问题,准确率很高。立即想到是不是因为我在 api 调用过程中没有做数据增强预处理,于是决定对输入图像做图像增强。

2025-08-08 15:10:43 396

原创 PaddleOCR 多线程并发问题

服务暂时可以正常用,但是后续需要考虑多线程并发问题。

2025-08-06 18:33:33 234 2

原创 Python 服务统一响应格式工具类

在开发 RESTful API 服务时,保持一致的响应格式是非常重要的。统一的响应格式不仅能让前端开发者更容易处理返回数据,还能提高 API 的可维护性和可读性。本文将介绍一个简单的 Python 工具类,帮助你在 Flask 应用中实现统一的响应格式。

2025-08-06 11:56:47 275

原创 Linux 启动、查看与终止进程命令

Linux 进程操作

2025-08-06 10:55:26 284

原创 Pytorch 数据集归一化

数据集归一化

2025-07-31 18:05:39 327

原创 PaddlePaddle 模型训练速度慢排查

排查问题

2025-07-31 17:59:17 144

原创 PaddlePaddle 深度学习环境搭建

飞桨深度学习环境搭建

2025-07-29 17:44:26 412

原创 Flask 蓝图(Blueprints)

Flask 蓝图

2025-07-15 18:07:59 425

原创 Python 3 基本语法

Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。

2025-07-10 17:53:29 716

原创 Python 3 基本数据类型

Python 的动态类型系统使其灵活强大,但理解各种类型特性是高效编程的关键。

2025-06-24 16:51:11 145

原创 LeetCode 解题思路 48(编辑距离、只出现一次的数字)

【代码】LeetCode 解题思路 48(编辑距离、只出现一次的数字)

2025-05-14 10:55:54 343

原创 LeetCode 解题思路 47(最长回文子串、最长公共子序列)

【代码】LeetCode 解题思路 47(最长回文子串、最长公共子序列)

2025-05-09 17:23:17 475

原创 LeetCode 解题思路 46(不同路径、最小路径和)

【代码】LeetCode 解题思路 46(不同路径、最小路径和)

2025-05-07 10:22:22 366

原创 LeetCode 解题思路 45(分割等和子集、最长有效括号)

【代码】LeetCode 解题思路 45(分割等和子集、最长有效括号)

2025-05-06 18:18:48 417

原创 LeetCode 解题思路 44(最长递增子序列、乘积最大子数组)

【代码】LeetCode 解题思路 44(最长递增子序列、乘积最大子数组)

2025-04-25 09:36:39 695

原创 LeetCode 解题思路 43(完全平方数、单词拆分)

【代码】LeetCode 解题思路 43(完全平方数、单词拆分)

2025-04-21 10:36:50 416

原创 LeetCode 解题思路 42(打家劫舍、零钱兑换)

【代码】LeetCode 解题思路 42(打家劫舍、零钱兑换)

2025-04-19 18:09:28 473

原创 LeetCode 解题思路 41(爬楼梯、杨辉三角)

【代码】LeetCode 解题思路 41(爬楼梯、杨辉三角)

2025-04-16 13:27:05 327

原创 计算机网络面经

幂等(Idempotence)是一个数学概念,用于描述某些操作的特性,即无论操作执行多少次,结果都是相同的。换句话说,幂等操作可以重复执行而不会改变系统状态。如果一个操作是幂等的,那么对同一资源执行该操作一次和执行该操作多次的效果相同。在正确实现下,GET、DELETE、PUT 和 HEAD 等方法都是幂等的,而 POST 方法不是。

2025-04-15 20:15:13 1334

原创 LeetCode 解题思路 40(跳跃游戏 II、划分字母区间)

【代码】LeetCode 解题思路 40(跳跃游戏 II、划分字母区间)

2025-04-15 10:55:33 541

原创 LeetCode 解题思路 39(买卖股票的最佳时机、跳跃游戏)

【代码】LeetCode 解题思路 39(买卖股票的最佳时机、跳跃游戏)

2025-04-14 11:09:06 243

原创 LeetCode 解题思路 38(前 K 个高频元素、数据流的中位数)

【代码】LeetCode 解题思路 38(前 K 个高频元素、数据流的中位数)

2025-04-13 13:06:22 327

原创 MySQL 面经

内连接用于返回两个表中有匹配关系的行。假设有两张表:用户表和订单表,想查询有订单的用户就可以使用内连接 users INNER JOIN orders,按照用户 ID 关联就行了。FROM users只有那些在两个表中都存在 user_id 的记录才会出现在查询结果中。和内连接不同,外连接不仅返回两个表中匹配的行,还返回没有匹配的行,用 null 来填充。外连接又分为左外连接 left join 和右外连接 right join。

2025-04-12 20:41:36 1296

原创 Java 集合框架面经

Java 中的队列主要通过 Queue 接口和并发包下的 BlockingQueue 两个接口来实现。优先级队列 PriorityQueue 实现了 Queue 接口,是一个无界队列,它的元素按照自然顺序排序或者 Comparator 比较器进行排序。双端队列 ArrayDeque 也实现了 Queue 接口,是一个基于数组的,可以在两端插入和删除元素的队列。采用安全失败机制的集合容器,在遍历时并不是直接在集合内容上访问的,而是先复制原有集合内容,在拷贝的集合上进行遍历。

2025-04-12 18:54:46 1148

原创 LeetCode 解题思路 37(柱状图中最大的矩形、数组中的第 K 个最大元素)

【代码】LeetCode 解题思路 37(柱状图中最大的矩形、数组中的第 K 个最大元素)

2025-04-12 17:37:00 342

原创 LeetCode 解题思路 36(字符串解码、每日温度)

【代码】LeetCode 解题思路 36(字符串解码、每日温度)

2025-04-10 11:32:59 488

原创 LeetCode 解题思路 35(有效的括号、最小栈)

【代码】LeetCode 解题思路 35(有效的括号、最小栈)

2025-04-09 10:58:02 326

原创 LeetCode 解题思路 34(寻找旋转排序数组中的最小值、寻找两个正序数组的中位数)

【代码】LeetCode 解题思路 34(寻找旋转排序数组中的最小值、寻找两个正序数组的中位数)

2025-04-08 12:03:44 326

原创 Redis 面经

字符串是最基础的数据类型,key 是字符串,value 是:字符串、数字、二进制。字符串的主要使用场景:缓存、计数、共享 Session、限速。哈希是键值对集合,key 是字符串,value 是 Map 集合,比如说 value = { name : ‘沉默王二’, age : 18 }。哈希的主要使用场景:缓存用户信息、缓存对象。List 是字符串列表,按照插入顺序排序。可以添加一个元素到列表的头部(左边)或者尾部(右边)。列表的主要使用场景:消息队列、文章列表。

2025-04-07 17:39:21 1795

原创 LeetCode 解题思路 33(在排序数组中查找元素的第一个和最后一个位置、搜索旋转排序数组)

【代码】LeetCode 解题思路 34(在排序数组中查找元素的第一个和最后一个位置、搜索旋转排序数组)

2025-04-07 12:07:06 356

原创 MyBatis 面经

Mybatis 是一个半 ORM 框架,它内部封装了 JDBC,开发时只需要关注 SQL 语句本身,不需要花费精力去处理加载驱动、创建连接、创建 statement 等繁杂的过程。程序员直接编写原生态 sql,可以严格控制 sql 执行性能,灵活度高。MyBatis 可以使用 XML 或注解来配置和映射原生信息,将 POJO 映射成数据库中的记录,避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。

2025-04-06 15:30:36 874

原创 LeetCode 解题思路 32(搜索插入位置、搜索二维矩阵)

【代码】LeetCode 解题思路 32(搜索插入位置、搜索二维矩阵)

2025-04-06 14:16:49 377

空空如也

空空如也

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

TA关注的人

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