当前位置: 首页 > 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下载​​​​​​​ 

相关文章:

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…...

【树的存储结构,孩子链表】

文章目录 树和森林树的存储结构孩子链表 树和森林 森林&#xff1a;是m(m>0)棵互不相交的树的集合。 树的存储结构 1.双亲表示法 实现&#xff1a;定义结构数组存放树的结点&#xff0c;每个结点含两个域。 数据域&#xff1a;存放结点本身信息。 双亲域&#xff1a;指…...

到蒙古包了,这边天气-9度 很冷

【点我-这里送书】 本人详解 作者&#xff1a;王文峰&#xff0c;参加过 CSDN 2020年度博客之星&#xff0c;《Java王大师王天师》 公众号&#xff1a;JAVA开发王大师&#xff0c;专注于天道酬勤的 Java 开发问题中国国学、传统文化和代码爱好者的程序人生&#xff0c;期待你的…...

淘宝天猫京东苏宁1688等平台关键词监控价格API接口(店铺商品价格监控API接口调用展示)

淘宝天猫京东苏宁1688等平台关键词监控价格API接口&#xff08;店铺商品价格监控API接口调用展示&#xff09;代码对接如下&#xff1a; item_get-获得淘宝商品详情 公共参数 请求地址: https://o0b.cn/anzexi 名称类型必须描述keyString是调用key&#xff08;必须以GET方式…...

案例:用户管理

案例&#xff1a;用户管理 1.展示用户列表2.添加用户3.删除用户 1.展示用户列表 url函数 获取用户星系HTML渲染 2.添加用户 url函数 GET。看到页面&#xff0c;输入内容POST。提交->写入到数据库 3.删除用户 url函数 http://127.0.0.1:8000/info/add/&#xff1f;ni…...

AIGC:使用生成对抗网络GAN实现MINST手写数字图像生成

1 生成对抗网络 生成对抗网络&#xff08;Generative Adversarial Networks, GAN&#xff09;是一种非常经典的生成式模型&#xff0c;它受到双人零和博弈的启发&#xff0c;让两个神经网络在相互博弈中进行学习&#xff0c;开创了生成式模型的新范式。从 2017 年以后&#x…...

excel中超级表和普通表的相互转换

1、普通表转换为超级表 选中表内任一单元格&#xff0c;然后按CtrlT&#xff0c;确认即可。 2、超级表转换为普通表 选中超级表内任一单元格&#xff0c;右键&#xff0c;表格&#xff0c;转换为区域&#xff0c;确定即可。 这时虽然已经变成了普通表&#xff0c;但样式没有…...

element中el-switch用法汇总(拓展:el-switch开关点击弹出确认框时,状态先改变,点击确认/取消失效,怎么解决?)

概述&#xff1a; el-switch 表示两种相互对立的状态间的切换&#xff0c;多用于触发「开/关」。 常见用法&#xff1a; 1、绑定v-model到一个Boolean类型的变量。可以使用active-color属性与inactive-color属性来设置开关的背景色。 2、使用active-text属性与inactive-tex…...

mysql之高阶语句

1、使用select语句&#xff0c;用order by对表进行排序【尽量用数字列进行排序】 select id,name,score from info order by score desc; ASC升序排列&#xff08;默认&#xff09; DESC降序排列&#xff08;需要添加&#xff09; &#xff08;1&#xff09;order by结合whe…...

视频编软件会声会影2024中文版功能介绍

会声会影2024中文版是一款加拿大公司Corel发布的视频编软件。会声会影2024官方版支持视频合并、剪辑、屏幕录制、光盘制作、添加特效、字幕和配音等功能&#xff0c;用户可以快速上手。会声会影2024软件还包含了视频教学以及模板素材&#xff0c;让用户剪辑视频更加的轻松。 会…...

IS-LM模型:从失衡到均衡的模拟

IS-LM模型&#xff1a;从失衡到均衡的模拟 文章目录 IS-LM模型&#xff1a;从失衡到均衡的模拟[toc] 1 I S − L M 1 IS-LM 1IS−LM模型2 数值模拟2.1 长期均衡解2.2 政府部门引入2.3 价格水平影响2.4 随机扰动因素 1 I S − L M 1 IS-LM 1IS−LM模型 I S − L M IS-LM IS−LM是…...

【Linux】进程终止

进程退出场景 代码运行完毕&#xff0c;结果正确代码运行完毕&#xff0c;结果不正确代码异常终止 可以用return 的不同的返回值数字&#xff0c;表征不同的出错原因退出码&#xff0c;所以进程运行正不正常我们可以查看退出码来判断&#xff1b; 如果进程异常&#xff0c;退…...

55.跳跃游戏

题目描述&#xff1a;给你一个非负整数数组 nums &#xff0c;你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标&#xff0c;如果可以&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示…...

php实现钉钉机器人推送消息和图片内容(完整版)

先来看下实现效果: 代码如下: function send_dingtalk_markdown($webhook , $title , $message "", $atMobiles [], $atUserIds []) {$data ["msgtype" > "markdown","markdown" > ["title" > $title,&quo…...

A Survey on Neural Network Interpretability

A Survey on Neural Network Interpretability----《神经网络可解释性调查》 摘要 随着深度神经网络的巨大成功&#xff0c;人们也越来越担心它们的黑盒性质。可解释性问题影响了人们对深度学习系统的信任。它还与许多伦理问题有关&#xff0c;例如算法歧视。此外&#xff0c;…...

代码随想录 Day41 动态规划09 LeetCode T121 买卖股票的最佳时机 T122 买卖股票的最佳时机II

前言 这两题看起来是不是有点眼熟,其实我们在贪心章节就已经写过了这两道题,当时我们用的是将利润分解,使得我们始终得到的是最大利润 假如第 0 天买入&#xff0c;第 3 天卖出&#xff0c;那么利润为&#xff1a;prices[3] - prices[0]。 相当于(prices[3] - prices[2]) (pri…...

ubuntu18-recvfrom接收不到广播报文异常分析

目录 前言 一、UDP广播接收程序 二、异常原因分析 总结 前言 在ubuntu18.04系统中&#xff0c;编写udp接收程序发现接收不到广播报文&#xff0c;使用抓包工具tcpdump可以抓取到广播报文&#xff0c;在此对该现象分析解析如下文所示。 一、UDP广播接收程序 UDP广播接收程序如…...

漏刻有时百度地图API实战开发(6)多个标注覆盖层级导致不能响应点击的问题

漏刻有时百度地图API实战开发(1)华为手机无法使用addEventListener click 的兼容解决方案漏刻有时百度地图API实战开发(2)文本标签显示和隐藏的切换开关漏刻有时百度地图API实战开发(3)自动获取地图多边形中心点坐标漏刻有时百度地图API实战开发(4)显示指定区域在移动端异常的解…...

使用Net2FTP轻松打造免费的Web文件管理器并公网远程访问

文章目录 1.前言2. Net2FTP网站搭建2.1. Net2FTP下载和安装2.2. Net2FTP网页测试 3. cpolar内网穿透3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 文件传输可以说是互联网最主要的应用之一&#xff0c;特别是智能设备的大面积使用&#xff0c;无论是个人…...

MySQL的表格去重,史上最简便的算法,一看就会

首先&#xff0c;表格my_tab02存在很多重复的数据&#xff1a; #表格的去重 方法一&#xff1a; 详细内容传送门&#xff1a;表格的去重 -- 思路&#xff1a; -- 1.先创建一张临时表 my_tmp,该表的结构和my_tab02一样 -- 2.把my_tmp的记录通过distinct关键字 处理后 把记录复…...

STM32CubeIDE玩转标准库:像用Keil一样开发F103C8T6,附详细配置清单与避坑指南

STM32CubeIDE玩转标准库&#xff1a;像用Keil一样开发F103C8T6&#xff0c;附详细配置清单与避坑指南 对于习惯了Keil标准库开发流程的工程师来说&#xff0c;切换到ST官方推荐的CubeIDE环境往往会面临诸多不适应。本文将带你突破工具链限制&#xff0c;在CubeIDE中完美复现Kei…...

从零到一:基于STM32硬件SPI驱动M95系列EEPROM的实战指南

1. 硬件SPI与EEPROM基础概念 第一次接触STM32的硬件SPI驱动EEPROM时&#xff0c;我也被各种专业术语搞得头晕眼花。简单来说&#xff0c;SPI就像两个人在用摩斯密码交流——主设备&#xff08;STM32&#xff09;通过四根线&#xff08;MOSI、MISO、SCK、NSS&#xff09;与从设备…...

CubeMX配置DMAMUX的3个常见坑:以STM32H723的EXTI触发DMA为例

STM32H723 DMAMUX实战&#xff1a;EXTI触发DMA的三大陷阱与突围指南 当我们需要在STM32H7系列芯片上实现高效数据搬运时&#xff0c;DMAMUX与DMA的组合无疑是利器。但在NUCLEO-H723ZG开发板上&#xff0c;通过EXTI触发DMA传输的配置过程中&#xff0c;开发者常会遭遇几个"…...

Atmosphere系统架构深度解析:从原理到实践的技术探索

Atmosphere系统架构深度解析&#xff1a;从原理到实践的技术探索 【免费下载链接】Atmosphere-stable 大气层整合包系统稳定版 项目地址: https://gitcode.com/gh_mirrors/at/Atmosphere-stable Atmosphere作为Nintendo Switch上最稳定、功能最丰富的自定义固件系统&…...

python aiohttp

### 聊聊 Python 的 aiohttp&#xff1a;一个写异步 HTTP 的家伙 作为 Python 开发者&#xff0c;平常写网络请求&#xff0c;最头疼的是啥&#xff1f;等 响应 的时候&#xff0c;程序卡在那儿&#xff0c;啥也干不了。十年前&#xff0c;大部分人会甩一句“用 gevent 啊”&am…...

5分钟精通MDCx Docker容器化部署:从零到生产环境的最佳实践

5分钟精通MDCx Docker容器化部署&#xff1a;从零到生产环境的最佳实践 【免费下载链接】mdcx-docker 在Docker容器中运行 MDCX&#xff0c;并通过Web界面或远程桌面进行控制。Run MDCX in a Docker container, accessible and controllable via a web interface or remote de…...

如何快速掌握音频频谱分析:Spek声学工具终极指南

如何快速掌握音频频谱分析&#xff1a;Spek声学工具终极指南 【免费下载链接】spek Acoustic spectrum analyser 项目地址: https://gitcode.com/gh_mirrors/sp/spek 你是否曾经好奇音乐中的高低频分布&#xff1f;或者想检查录音中的噪声问题&#xff1f;Spek就是你的答…...

Qianfan-OCR识别结果后处理实战:正则表达式与自然语言处理技巧

Qianfan-OCR识别结果后处理实战&#xff1a;正则表达式与自然语言处理技巧 1. 引言&#xff1a;为什么需要OCR后处理 OCR技术虽然已经相当成熟&#xff0c;但在实际应用中&#xff0c;识别结果往往存在各种问题。你可能遇到过这样的情况&#xff1a;从名片上扫描的电话号码多…...

3分钟掌握Alice-Tools:游戏资源编辑与提取的终极解决方案

3分钟掌握Alice-Tools&#xff1a;游戏资源编辑与提取的终极解决方案 【免费下载链接】alice-tools Tools for extracting/editing files from AliceSoft games. 项目地址: https://gitcode.com/gh_mirrors/al/alice-tools 你是否曾梦想过能够轻松修改自己喜爱的AliceSo…...

3步搞定喜马拉雅VIP音频下载:这款跨平台工具让你轻松保存付费内容

3步搞定喜马拉雅VIP音频下载&#xff1a;这款跨平台工具让你轻松保存付费内容 【免费下载链接】xmly-downloader-qt5 喜马拉雅FM专辑下载器. 支持VIP与付费专辑. 使用GoQt5编写(Not Qt Binding). 项目地址: https://gitcode.com/gh_mirrors/xm/xmly-downloader-qt5 还在…...