# chework9 **Repository Path**: chewlll/chework9 ## Basic Information - **Project Name**: chework9 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-06-06 - **Last Updated**: 2025-06-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 汉字生字表图像特征提取与字符分割项目 一、项目概述 本项目使用 Python 和 OpenCV 库,对汉字生字表图片进行图像处理,提取单个汉字字符并保存。通过图像滤波、二值化、形态学处理和轮廓检测等技术,实现字帖中汉字的自动分割与保存。 二、项目结构 plaintext chars/ # 保存处理结果和截取的汉字图片 ├─ 1_original.jpg # 原始图像 ├─ 2_gray.jpg # 灰度化图像 ├─ 3_binary.jpg # 二值化图像 ├─ 4_eroded.jpg # 腐蚀处理图像 ├─ 5_dilated.jpg # 膨胀处理图像 ├─ 6_closing.jpg # 闭运算处理图像 ├─ 7_edges.jpg # Canny边缘检测图像 ├─ 8_contours.jpg # 轮廓检测结果图像 ├─ 9_final_result.jpg # 最终结果图像(带边框) └─ cropped/ # 截取的单个汉字图片(按序号保存为PNG) 三、技术流程与代码说明 1. 图像预处理 灰度化:将彩色图像转换为灰度图,简化后续处理。 二值化:通过阈值处理将图像转换为黑白二值图,突出汉字区域。 形态学处理: 腐蚀:去除细小噪声,收缩汉字边缘。 膨胀:连接断裂的笔画,恢复汉字形状。 闭运算:填充汉字内部小孔,连接邻近字符。 2. 轮廓检测与字符分割 边缘检测:使用 Canny 算法检测图像边缘,便于轮廓提取。 轮廓筛选:根据周长和宽高比过滤无效轮廓,保留汉字区域。 外接矩形绘制:为每个汉字绘制正外接矩形边框,并截取矩形内区域保存为独立图片。 关键代码片段 python # 灰度化处理 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) cv2.imwrite('chars/2_gray.jpg', gray) # 二值化处理 _, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY_INV) cv2.imwrite('chars/3_binary.jpg', binary) # 形态学腐蚀与膨胀 kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3)) eroded = cv2.erode(binary, kernel, iterations=4) dilated = cv2.dilate(eroded, kernel, iterations=2) # 闭运算处理 kernel_closing = cv2.getStructuringElement(cv2.MORPH_CROSS, (25, 25)) closing = cv2.morphologyEx(dilated, cv2.MORPH_CLOSE, kernel_closing, iterations=2) # 轮廓检测与字符截取 contours, _ = cv2.findContours(closing, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) for i, contour in enumerate(contours): perimeter = cv2.arcLength(contour, True) if 200 < perimeter < 5000: x, y, w, h = cv2.boundingRect(contour) cv2.rectangle(result_img, (x, y), (x+w, y+h), (0, 255, 0), 2) roi = original[y:y+h, x:x+w] cv2.imwrite(f"chars/cropped/char_{i+1}.png", roi) 四、运行结果展示 处理步骤结果 步骤 图像文件名 说明 原始图像 1_original.jpg 输入的汉字生字表图片 灰度化 2_gray.jpg 去除颜色信息 二值化 3_binary.jpg 黑白二值化处理 腐蚀处理 4_eroded.jpg 去除细小噪声 膨胀处理 5_dilated.jpg 连接断裂笔画 闭运算 6_closing.jpg 填充内部孔洞 边缘检测 7_edges.jpg Canny 边缘检测结果 轮廓检测 8_contours.jpg 绘制汉字外接矩形 最终结果 9_final_result.jpg 带边框的原始图像 截取的汉字图片示例 ![alt text](chars/1_original.jpg) ![alt text](chars/7_edges.jpg) 五、环境要求 Python 版本:3.8+ 依赖库: bash opencv-python>=4.5.5 numpy>=1.21.0 matplotlib>=3.4.3 运行命令: bash python app.py 六、注意事项 确保输入图片路径正确。 若检测效果不佳,可调整以下参数: 二值化阈值(cv2.threshold中的127) 轮廓周长过滤范围(min_perimeter和max_perimeter) 项目需联网下载 OpenCV 依赖库。 七、个人信息 学号: 202352320201 年级: 2023 专业: 智能科学与技术 班级: 2班