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

效果

项目

代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using OpenCvSharp;namespace OpenCvSharp_基于直线检测的文本图像倾斜校正
{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){string path = "1.jpg";pictureBox1.Image = new Bitmap(path);Mat mat = new Mat(path);Mat gray = new Mat(path, ImreadModes.Grayscale);Mat binary = new Mat();Cv2.Threshold(gray, binary, 50, 255, ThresholdTypes.BinaryInv);Mat element = Cv2.GetStructuringElement(MorphShapes.Rect, new OpenCvSharp.Size(7, 1));Mat dilation = new Mat();Cv2.Dilate(binary, dilation, element);Mat cannyDst = new Mat();Cv2.Canny(dilation, cannyDst, 150, 200);Mat houghDst = new Mat();mat.CopyTo(houghDst);LineSegmentPolar[] lineing = Cv2.HoughLines(cannyDst, 1, Cv2.PI / 180, 110, 0, 0);Scalar color = new Scalar(0, 255, 255);double meanAngle = 0.0;int numCnt = 0;for (int i = 0; i < lineing.Length; i++){double rho = lineing[i].Rho;//线长double theta = lineing[i].Theta;//角度OpenCvSharp.Point pt1 = new OpenCvSharp.Point();OpenCvSharp.Point pt2 = new OpenCvSharp.Point();double a = Math.Cos(theta);double b = Math.Sin(theta);double x0 = a * rho, y0 = b * rho;pt1.X = (int)Math.Round(x0 + 600 * (-b));pt1.Y = (int)Math.Round(y0 + 600 * a);pt2.X = (int)Math.Round(x0 - 600 * (-b));pt2.Y = (int)Math.Round(y0 - 600 * a);Cv2.Line(houghDst, pt1, pt2, color, 1, LineTypes.Link4);theta = theta * 180 / Cv2.PI - 90;meanAngle += theta;numCnt++;}//Cv2.ImShow("houghDst", houghDst);meanAngle /= numCnt;Point2f center = new Point2f(mat.Cols / 2.0f, mat.Rows / 2.0f);Mat warpDst = new Mat();Mat rot_mat = Cv2.GetRotationMatrix2D(center, meanAngle, 1.0);OpenCvSharp.Size dst_sz = new OpenCvSharp.Size(mat.Cols, mat.Rows);Cv2.WarpAffine(mat, warpDst, rot_mat, dst_sz);pictureBox2.Image = new Bitmap(warpDst.ToMemoryStream());}}
}

Demo下载

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/120512.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

02 MIT线性代数-矩阵消元 Elimination with matrices

一, 消元法 Method of Elimination 消元法是计算机软件求解线形方程组所用的最常见的方法。任何情况下&#xff0c;只要是矩阵A可逆&#xff0c;均可以通过消元法求得Axb的解 eg: 我们将矩阵左上角的1称之为“主元一”&#xff08;the first pivot&#xff09;&#xff0c;第…

SSRF漏洞

Server-Side Request Forgery:服务器端请求伪造 目标&#xff1a;网站的内部系统 形成的原因 攻击者构造形成由服务器端发起请求的译者安全漏洞。 由于服务端提供了从其他服务器应用获取数据的功能&#xff0c;且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内…

oracle执行计划中,同一条语句块,在不同情况下执行计划不一样问题。子查询,union 导致索引失效。

场景&#xff1a; 需要获取部分数据集(视图)的业务时间最大值&#xff0c;希望只通过一条语句获取多个的最大值。 则使用select (视图1业务时间最大值),(视图2业务时间最大值),(视图3业务时间最大值) from dual 程序执行过程中&#xff0c;发现语句执行较慢&#xff0c;则进行s…

delphi 11 安装失败

delphi 11 安装遇到如下图&#xff1a; 解决方法&#xff1a; 以管理员身份重新安装&#xff01;&#xff01;&#xff01; 以管理员身份重新安装&#xff01;&#xff01;&#xff01; 以管理员身份重新安装&#xff01;&#xff01;&#xff01; 管理员身份&#xff01;&…

【项目】基于C++11实现的数据库连接池

文章目录 前置知识关键技术点项目背景连接池功能点介绍MySQL Server参数介绍功能设计连接池功能点介绍开发平台选型关于MySQL数据库编程MySQL接口介绍测试表设计Connection设计数据库配置文件mysql.conf日志文件log.hppConnectionPool设计压力测试源码链接:前置知识 关键技术…

IOTE 2023盛况回顾,美格智能聚连接之力促数字新生长

9月20~22日&#xff0c;IOTE国际物联网展深圳站在深圳国际会展中心正式召开。本届展会以“IoT构建数字经济底座”为主题&#xff0c;聚焦物联网技术助推数字经济发展的核心动力。美格智能携前沿技术成果亮相展会&#xff0c;与参展观众深入交流。 展会上&#xff0c;美格智能带…

【Kettle】Kettle部署与运行

一、部署 1.安装java 此处安装openjdk1.8&#xff0c;可用yum、apt、源码等方式安装&#xff0c;具体安装方式略。 2.安装kettle 1.下载 https://www.hitachivantara.com/en-us/products/pentaho-platform/data-integration-analytics/pentaho-community-edition.html 此…

【Java 进阶篇】使用 SQL 进行排序查询

在数据库中&#xff0c;我们经常需要对查询的结果进行排序&#xff0c;以便更容易地理解和分析数据。SQL&#xff08;Structured Query Language&#xff09;提供了强大的排序功能&#xff0c;允许我们按照指定的列对数据进行升序或降序排序。本文将详细介绍如何使用 SQL 进行排…

2023软工作业(一)——计算器

班级班级社区作业要求软件工程实践第一次作业-CSDN社区作业目标完成一个具有可视化界面的科学计算器参考文献Fyne 目录 作业要求 项目源码地址 作业目标 0. 界面及功能展示 1. PSP表格 2. 解题思路描述 3. 核心代码 4. 设计与实现过程 5. 程序性能改进 6. 单元测试展…

读取.nrrd和.dcm文件格式医学图片可视化与预处理

nrrd数据格式 MITK默认会将医学图像保存为格式为NRRD的图像&#xff0c;在这个数据格式中包含&#xff1a; 1、一个单个的数据头文件&#xff1a;为科学可视化和医学图像处理准确地表示N维度的栅格信息。 2、既能分开又能合并的图像文件。 nrrd_options输出 {u’dimension’:…

基于Java实现的仓库管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言功能介绍&#xff1a;具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导…

王庆友-架构的本质:如何打造一个有序的系统?

整理自&#xff1a;王庆友-[架构实战案例解析] 我们知道&#xff0c;现在的软件系统越来越复杂&#xff0c;当然相应地&#xff0c;架构的作用也越来越明显。作为开发人员&#xff0c;我们每天都在和架构打交道&#xff0c;在这个过程中&#xff0c;对于架构也经常会产生各种各…