You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1amiracle 01be3d03c3 Final 2 months ago
..
extract_seal_main Final 2 months ago
remove_border Final 2 months ago
CMakeLists.txt Final 2 months ago
README.md Final 2 months ago
build.bat Final 2 months ago
common.cpp Final 2 months ago
common.h Final 2 months ago
image_utilities.cpp Final 2 months ago
image_utilities.h Final 2 months ago

README.md

Seal Processing - 印章处理模块

印章检测与处理的 C++ 模块,包含印章提取和边框移除功能。

环境要求

  • CMake >= 3.10
  • MinGW-w64 (通过 MSYS2 安装)
  • OpenCV >= 4.0 (通过 MSYS2 安装: mingw-w64-x86_64-opencv)

安装依赖MSYS2

pacman -S mingw-w64-x86_64-toolchain
pacman -S mingw-w64-x86_64-cmake
pacman -S mingw-w64-x86_64-opencv

项目结构

Final project/
├── image/                  # 测试图片目录
│   ├── 1.png
│   └── 2.png
│
└── c/                      # C++ 项目目录
    ├── CMakeLists.txt      # CMake 配置文件
    ├── build.bat           # 一键编译脚本
    ├── README.md           # 说明文档
    │
    ├── common.cpp          # 公共函数
    ├── common.h
    ├── image_utilities.cpp # 图像工具
    ├── image_utilities.h
    │
    ├── extract_seal_main/  # 印章提取模块
    │   ├── extract_seal_main.cpp
    │   ├── extract_seal_main.h
    │   ├── adjust_image.cpp
    │   ├── adjust_image.h
    │   ├── color_filter.cpp
    │   ├── color_filter.h
    │   ├── hsv_color.cpp
    │   ├── hsv_color.h
    │   ├── image_morphology.cpp
    │   ├── image_morphology.h
    │   └── test_extract_seal.cpp
    │
    └── remove_border/      # 边框移除模块
        ├── remove_border.cpp
        ├── remove_border.h
        ├── remove_border_main.cpp
        ├── remove_border_main.h
        └── test_remove_border.cpp

编译后生成的目录(不会被 Git 追踪):

  • c/build/ - 编译输出目录,包含可执行文件
  • c/extract_seal_main/test_image/ - 印章提取测试输出
  • c/remove_border/test_image/ - 边框移除测试输出

编译

方法1使用 build.bat在 cmd.exe 中运行)

命令提示符 (cmd) 中运行:

cd "c:\Users\用户名\Desktop\Final project\c"
build.bat

或在 PowerShell 中运行:

cd "c:\Users\用户名\Desktop\Final project\c"
cmd /c .\build.bat

方法2手动 CMake 编译(推荐)

cd "c:\Users\用户名\Desktop\Final project\c"
mkdir build -ErrorAction SilentlyContinue
cd build
cmake .. -G "MinGW Makefiles" -DOpenCV_DIR="C:/msys64/mingw64/lib/cmake/opencv4"
cmake --build .

注意: 请将 用户名 替换为您的 Windows 用户名。


运行 test_extract_seal印章提取

功能

从图片中提取印章,输出裁剪后的印章图像。

运行命令

cd "c:\Users\用户名\Desktop\Final project\c\build"
.\test_extract_seal.exe

程序会自动处理

输入:

  • build/ 目录运行时,程序会扫描 ../../image/ 目录
  • Final project/image/ 目录下的图片
  • 支持格式:.png, .jpg, .jpeg, .bmp

输出:

  • 自动保存在 ../extract_seal_main/test_image/ 目录
  • Final project/c/extract_seal_main/test_image/ 目录
  • 每个印章生成 3 个文件:
    • seal_{图片名}_{序号}_cropped.png - 原始裁剪区域
    • seal_{图片名}_{序号}_ex_img.png - 提取后的印章图像
    • seal_{图片名}_{序号}_adj_img.png - 校正后的印章图像

关于检测数据

程序内部已预设了 1.png2.png 的印章检测数据det。如需使用其他图片请参考"测试说明"章节。


运行 test_remove_border边框移除

功能

对提取的印章进行边框移除处理。

运行命令

cd "c:\Users\用户名\Desktop\Final project\c\build"
.\test_remove_border.exe

测试说明

关于印章检测数据det

目前 C++ 程序不包含印章检测功能(即原 Python 项目 seal_ocr 中的 detect 部分)。

程序中使用的印章边框数据det是通过运行原 Python 项目获得后,在 C++ 代码中进行了硬编码设定。

如需使用自己的测试图片:

  1. 使用原 Python 项目 seal_ocr 运行图片获取检测数据det
  2. 修改 C++ 测试文件中硬编码的 det 数据
  3. 重新编译并运行程序

各测试程序的差异

测试程序 处理范围 检测数据 说明
test_extract_seal.cpp 多张图片 预设 1.png, 2.png 自动扫描 image/ 目录,但仅对预设的图片有检测数据
test_remove_border.cpp 单张图片 预设 1.png 仅处理 1.png需要手动修改代码中的图片路径和 det 数据

注意: 两个测试程序都预设了检测数据det如需处理其他图片需要先使用原 Python 项目获取 det 数据,然后修改代码。


快速开始

# 1. 进入项目目录
cd "c:\Users\用户名\Desktop\Final project\c"

# 2. 编译(使用 CMake
mkdir build -ErrorAction SilentlyContinue
cd build
cmake .. -G "MinGW Makefiles" -DOpenCV_DIR="C:/msys64/mingw64/lib/cmake/opencv4"
cmake --build .

# 3. 运行印章提取测试
.\test_extract_seal.exe

# 4. 运行边框移除测试
.\test_remove_border.exe

注意: 请将 用户名 替换为您的 Windows 用户名。


常见问题

1. cd 命令报错:找不到路径

原因: 路径中有空格 Final project

解决: 用引号包围路径

cd "c:\Users\用户名\Desktop\Final project\c"

2. CMake 找不到 OpenCV

确保指定正确的 OpenCV 路径:

cmake .. -G "MinGW Makefiles" -DOpenCV_DIR="C:/msys64/mingw64/lib/cmake/opencv4"

3. 编译失败

检查:

  • MinGW-w64 是否已正确安装
  • 环境变量 PATH 是否包含 C:\msys64\mingw64\bin

4. 运行时找不到 DLL

C:\msys64\mingw64\bin 添加到系统 PATH或复制相关 DLL 到可执行文件目录。