# shukeng **Repository Path**: bigapple331/shukeng ## Basic Information - **Project Name**: shukeng - **Description**: 基于ODM和YOLT的树坑识别前后端 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-10-28 - **Last Updated**: 2025-10-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Shukeng 项目文档 ## 项目简介 Shukeng 是一个用于图像处理和目标检测的项目,主要功能包括图像切片、预测绘制、坐标转换、非极大值抑制(NMS)等。该项目还提供了一个基于 Flask 的 Web 接口,用于处理正射影像、检测任务和编辑检测结果。 ## 主要功能模块 ### 图像处理工具 (`biaozhu/utils`) - **`slice_image`**: 将大图像分割为指定大小的小图像块,支持重叠区域设置。 - **`convert_coordinates`**: 将 YOLOv8 检测结果的坐标转换为原始图像坐标。 - **`draw_predictions_on_image`**: 在图像上绘制检测结果。 - **`apply_nms`**: 对检测结果应用非极大值抑制,去除重复检测框。 ### Web 服务 (`porting/app`) - **Flask 应用**: 使用 `create_app` 创建 Flask 应用,提供 RESTful API 接口。 - **正射影像处理**: 提供创建项目、检查任务状态、获取任务结果等接口。 - **检测服务**: 提供检测任务的创建、状态检查、结果获取等接口。 - **编辑服务**: 提供合并编辑结果、检查合并状态等接口。 ### 服务模块 (`porting/app/services`) - **`SliceService`**: 图像切片服务,用于将正射影像分割为小图像块。 - **`InferenceService`**: 推理服务,用于执行检测任务。 - **`MergeService`**: 合并服务,用于将检测结果合并到原始图像上。 - **`ODMService`**: ODM(Open Drone Map)服务,用于处理无人机图像生成正射影像。 ### 前端 (`porting/frontend`) - **`index.html`**: 主页面,提供用户界面,支持正射影像、检测和编辑功能。 - **`app.py`**: Flask 前端路由,提供页面渲染功能。 - **`handlers.js`**: JavaScript 处理器,用于处理用户交互和 API 请求。 - **`status.js`**: 任务状态管理,用于轮询和更新任务状态。 - **`utils.js`**: 工具函数,用于按钮状态管理、任务信息存储等。 ## 安装与运行 ### 依赖安装 确保已安装以下依赖: - Python 3.x - Flask - OpenCV - NumPy - YOLOv8 模型文件 ```bash pip install flask opencv-python numpy ``` ### 运行项目 1. **启动服务**: ```bash python porting/app.py ``` 或使用提供的 `run.bat` 脚本。 2. **访问前端**: 打开浏览器,访问 `http://localhost:5000`。 ## 使用说明 ### 图像切片 使用 `slice_image` 函数将大图像分割为小图像块: ```python from biaozhu.utils.slice_images import slice_image slice_image( image_path="path/to/image.tif", preject_name="project1", out_dir_all_images="path/to/output", sliceHeight=416, sliceWidth=416, overlap=0.1, slice_sep="_", overwrite=False, out_ext=".png" ) ``` ### 检测与绘制 使用 `convert_coordinates` 和 `draw_predictions_on_image` 处理检测结果: ```python from biaozhu.utils.convert_coordinates import convert_coordinates from biaozhu.utils.draw_pred_on_onr_img import draw_predictions_on_image # 转换坐标 convert_coordinates( txt_label_path="path/to/labels", output_file_dir="path/to/output", iou_threshold=0.45, confidence_threshold=0.25, area_weight=0.5, slice_sep="_" ) # 绘制检测结果 draw_predictions_on_image( image_path="path/to/image.png", results_file_path="path/to/results.txt", class_labels=[0, 1, 2], class_names=["tree", "car", "building"], completed_output_path="path/to/output_image.png" ) ``` ### 非极大值抑制 (NMS) 使用 `apply_nms` 函数去除重复检测框: ```python from biaozhu.utils.n_cls_nms_plus import apply_nms # 假设 detections 是检测结果列表 nms_detections = apply_nms( detections, iou_threshold=0.45, confidence_threshold=0.25, area_weight=0.5 ) ``` ### Web API 使用 #### 创建正射影像项目 ```http POST /projects Content-Type: application/json { "name": "project1", "images": ["image1.jpg", "image2.jpg"] } ``` #### 提交检测任务 ```http POST /detect Content-Type: application/json { "image_path": "path/to/image", "slice_params": { "sliceHeight": 416, "sliceWidth": 416, "overlap": 0.1 }, "infer_params": { "iou_threshold": 0.45, "confidence_threshold": 0.25 } } ``` #### 获取任务状态 ```http GET /tasks/{task_id}/status ``` #### 获取任务结果 ```http GET /tasks/{task_id}/results ``` ## 贡献指南 欢迎贡献代码和改进文档。请遵循以下步骤: 1. Fork 仓库 2. 创建新分支 3. 提交更改 4. 发起 Pull Request ## 许可证 本项目使用 MIT 许可证。详情请查看 `LICENSE.txt` 文件。