C# OpenCvSharp 基于霍夫变换直线检测的文本图像倾斜校正文本图像倾斜校
2026/6/9 19:31:54 网站建设 项目流程

C# OpenCvSharp 基于霍夫变换直线检测的文本图像倾斜校正文本图像倾斜校

项目简介

这是是一个基于OpenCvSharp的 Windows 桌面应用程序,用于对倾斜的文本图像进行自动角度检测与校正。程序采用 WinForms 界面,支持用户上传图像,实时显示原始图像与校正后的结果图像,并输出检测到的倾斜角度。


算法原理

本项目采用**基于霍夫直线检测(Hough LineTransform)**的倾斜校正算法,整体处理流程如下:

原始图像 → 灰度化 → 二值化 → 形态学膨胀 → Canny边缘检测 → 霍夫直线检测 → 计算平均倾斜角 → 仿射旋转校正
各步骤说明
步骤说明
灰度化将彩色图像转为单通道灰度图,降低计算复杂度
二值化使用固定阈值(50)进行反向二值化,使文字区域变为白色前景
形态学膨胀使用 7×1 矩形结构元素进行水平方向膨胀,将同一行文字连通为整体
Canny 边缘检测对膨胀结果进行边缘提取,得到文字行的上下边缘轮廓
霍夫直线检测在极坐标空间中检测直线,参数:距离分辨率 1px,角度分辨率 1°,累加器阈值 110
计算平均角度将所有检测到的直线角度求均值,作为整体倾斜角
仿射旋转校正以图像中心为旋转中心,使用WarpAffine对原图进行反向旋转,完成校正

环境要求

项目要求
操作系统Windows 10 / 11(64 位)
IDEVisual Studio 2019 或更高版本
框架.NET Framework 4.7.2
平台架构x64
语言C#(语法版本 ≤ 6.0)
依赖库OpenCvSharp 4.13.0

安装步骤

  1. 确保已安装Visual Studio 2019,并勾选".NET 桌面开发"工作负载。

  2. 克隆或下载本项目到本地:

    gitclone<仓库地址>
  3. 使用 Visual Studio 打开解决方案文件FIRC.sln

  4. 在 Visual Studio 顶部工具栏中,将平台切换为x64,配置选择Debug

  5. OpenCvSharp 相关 DLL 已放置于bin\x64\Debug\目录,无需额外安装。若需重新生成,可通过 NuGet 安装:

    Install-Package OpenCvSharp4 -Version 4.13.0 Install-Package OpenCvSharp4.Extensions -Version 4.13.0 Install-Package OpenCvSharp4.runtime.win -Version 4.13.0
  6. 执行一次"生成 → 重新生成解决方案",确认无编译错误。


运行步骤

  1. 在 Visual Studio 中将平台设置为x64,配置选择Debug,按F5启动程序。

  2. 程序启动后显示主界面,包含两个按钮和两个图像显示区域:

    • 上传图片:使用算法1(霍夫直线检测)进行倾斜校正

    • 上传图片(算法2):预留算法2接口

  3. 点击"上传图片"按钮,在弹出的文件选择对话框中选择一张图像文件(支持.jpg.jpeg.png.bmp.tif.tiff)。

  4. 程序自动完成图像处理与校正,界面将显示:

    • 左侧:原始图像

    • 右侧:校正结果

    • 顶部标签:检测到的倾斜角度

  5. 如需测试其他图像,直接再次点击按钮重新选择即可。


注意事项

  1. 必须使用 x64 平台编译运行,OpenCvSharp 原生库(OpenCvSharpExtern.dll)仅提供 x64 版本,AnyCPU 模式下会抛出BadImageFormatException

  2. 语法限制:项目严格遵循 C# 6.0 语法规范,禁止使用以下 C# 7.0+ 特性:

    • 字符串插值($"..."

    • 空值条件运算符(?.??=

    • 模式匹配(is/switch模式)

    • 元组解构

    • 局部函数

  3. 图像要求:算法适用于包含明显水平文本行的图像,背景需与文字有足够对比度。若图像中无直线被检测到,程序会弹出提示。

  4. 二值化阈值:当前固定阈值为 50,若图像整体偏亮或偏暗,可能需要调整Cv2.Threshold中的阈值参数以获得更好效果。

  5. DLL 文件bin\x64\Debug\目录下的OpenCvSharpExtern.dllopencv_videoio_ffmpeg4130_64.dll为原生 C++ 库,必须与可执行文件在同一目录,否则会报找不到 DLL 的错误。


文件夹结构

FIRC/ ├── Properties/ # 项目属性文件 │ ├── AssemblyInfo.cs # 程序集版本信息 │ ├── Resources.Designer.cs # 资源文件自动生成代码 │ ├── Resources.resx # 资源文件 │ ├── Settings.Designer.cs # 设置文件自动生成代码 │ └── Settings.settings # 应用程序设置 ├── bin/ # 编译输出目录 │ ├── Debug/ # AnyCPU Debug 输出(不使用) │ ├── Release/ # AnyCPU Release 输出(不使用) │ └── x64/ │ └── Debug/ # x64 Debug 输出(主要运行目录) │ ├── dll/x64/ │ │ ├── OpenCvSharpExtern.dll # OpenCvSharp 原生 C++ 库 │ │ └── opencv_videoio_ffmpeg4130_64.dll # FFmpeg 视频库 │ ├── OpenCvSharp.dll # OpenCvSharp 托管库 │ ├── OpenCvSharp.Extensions.dll # OpenCvSharp 扩展库(Mat↔Bitmap转换) │ ├── System.Buffers.dll # 运行时依赖 │ ├── System.Drawing.Common.dll # 绘图库 │ ├── System.Memory.dll # 内存管理库 │ ├── System.Numerics.Vectors.dll # 向量计算库 │ └── System.Runtime.CompilerServices.Unsafe.dll ├── App.config # 应用程序配置文件 ├── FIRC.csproj # 项目文件(MSBuild 配置) ├── FIRC.sln # 解决方案文件 ├── Form1.cs # 主窗体业务逻辑(图像处理与校正算法) ├── Form1.Designer.cs # 主窗体界面布局(控件定义) └── Program.cs # 程序入口

源码地址:https://download.csdn.net/download/FL1623863129/90010795

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询