当前位置: 首页 > news >正文

C# OpenCvSharp 去除文字中的线条

效果

中间过程效果

项目

代码

using OpenCvSharp;
using System;
using System.Drawing;
using System.Windows.Forms;
using static System.Net.Mime.MediaTypeNames;namespace OpenCvSharp_Demo
{public partial class frmMain : Form{public frmMain(){InitializeComponent();}string image_path = "";private void Form1_Load(object sender, EventArgs e){image_path = "1.png";pictureBox1.Image = new Bitmap(image_path);}private void button2_Click(object sender, EventArgs e){Mat image = new Mat(image_path);Cv2.Resize(image, image, new OpenCvSharp.Size(), 5, 5, InterpolationFlags.Cubic);Cv2.ImShow("image", image);Mat gray = new Mat();Cv2.CvtColor(image, gray, ColorConversionCodes.BGR2GRAY);Cv2.ImShow("gray", gray);Mat binary = new Mat();Cv2.Threshold(gray, binary, 70, 255, ThresholdTypes.BinaryInv);Cv2.ImShow("binary", binary);LineSegmentPoint[] res = Cv2.HoughLinesP(binary,rho: 1,theta: Math.PI / 180.0,threshold: 100,minLineLength: image.Cols - 50,maxLineGap: 50);//Console.WriteLine("res.Length:" + res.Length);Mat mask = Mat.Zeros(image.Rows, image.Cols, MatType.CV_8UC1);for (int i = 0; i < res.Length; i++){Scalar color = Scalar.RandomColor();Cv2.Line(mask, res[i].P1, res[i].P2,color: Scalar.White,thickness: 11,lineType: LineTypes.Link8);}Cv2.ImShow("mask", mask);Mat dst = new Mat();Cv2.Inpaint(binary, mask, dst, 5, InpaintMethod.Telea);Cv2.ImShow("Inpaint", dst);for (int r = 0; r < dst.Rows; r++){for (int c = 0; c < dst.Cols; c++){byte p = dst.At<byte>(r, c);if (p > 50){dst.Set<byte>(r, c, 255);}else{dst.Set<byte>(r, c, 0);}}}Cv2.ImShow("black background", dst);//黑白反色Cv2.BitwiseNot(dst, dst);Cv2.ImShow("dst", dst);Cv2.ImWrite("dst.jpg", dst);pictureBox2.Image = new Bitmap(dst.ToMemoryStream());}}
}

下载

Demo下载 

相关文章:

  • AWTK 与 Qt 的异同点比较
  • 在gitlab中的使用kaniko打造流水线
  • Redis之哨兵模式
  • 基于猕猴感觉运动皮层的神经元Spike信号分析
  • pytorch中对nn.BatchNorm2d()函数的理解
  • 时序预测 | MATLAB实现WOA-CNN-GRU-Attention时间序列预测(SE注意力机制)
  • 部署ruoyi-vue-plus和ruoyi-app
  • Spring底层原理学习笔记--第五讲--(常见工厂后处理器与工厂后处理器模拟实现)
  • Sass 最基础的语法
  • Maven-依赖管理机制
  • 【大数据分布并行处理】单元测试(三)
  • CMOS介绍
  • [HXPCTF 2021]includer‘s revenge
  • MYSQL---基础篇
  • 4.HTML网页开发的工具
  • [deviceone开发]-do_Webview的基本示例
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • Akka系列(七):Actor持久化之Akka persistence
  • Android开发 - 掌握ConstraintLayout(四)创建基本约束
  • Git的一些常用操作
  • Gradle 5.0 正式版发布
  • JS专题之继承
  • MySQL QA
  • React 快速上手 - 07 前端路由 react-router
  • Redash本地开发环境搭建
  • 初识MongoDB分片
  • 配置 PM2 实现代码自动发布
  • 如何优雅的使用vue+Dcloud(Hbuild)开发混合app
  • 双管齐下,VMware的容器新战略
  • 思维导图—你不知道的JavaScript中卷
  • 跳前端坑前,先看看这个!!
  • 中文输入法与React文本输入框的问题与解决方案
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • ​你们这样子,耽误我的工作进度怎么办?
  • ​业务双活的数据切换思路设计(下)
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • (1)(1.13) SiK无线电高级配置(六)
  • (1)虚拟机的安装与使用,linux系统安装
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (转)c++ std::pair 与 std::make
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .net core webapi Startup 注入ConfigurePrimaryHttpMessageHandler
  • .NET Core中Emit的使用
  • .NET delegate 委托 、 Event 事件
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地定义和使用弱事件
  • .NET/C# 如何获取当前进程的 CPU 和内存占用?如何获取全局 CPU 和内存占用?