C# OpenCvSharp 环形文字处理 直角坐标与极坐标转换
效果1

效果2

项目

代码
using OpenCvSharp;
using System;
using System.Drawing;
using System.Text;
using System.Windows.Forms;namespace OpenCvSharp_Demo
{public partial class frmMain : Form{public frmMain(){InitializeComponent();}string fileFilter = "*.*|*.bmp;*.jpg;*.jpeg;*.tiff;*.tiff;*.png";string image_path = "";DateTime dt1 = DateTime.Now;DateTime dt2 = DateTime.Now;Mat image;Mat result_image;StringBuilder sb = new StringBuilder();private void button1_Click(object sender, EventArgs e){OpenFileDialog ofd = new OpenFileDialog();ofd.Filter = fileFilter;if (ofd.ShowDialog() != DialogResult.OK) return;pictureBox1.Image = null;pictureBox2.Image = null;image_path = ofd.FileName;pictureBox1.Image = new Bitmap(image_path);image = new Mat(image_path);}private void Form1_Load(object sender, EventArgs e){}private void button2_Click(object sender, EventArgs e){image_path = "test_img/2.jpg";image = new Mat(image_path);pictureBox1.Image = new Bitmap(image_path);result_image = new Mat();float h, w, cx, cy;h = (float)image.Height;w = (float)image.Width;//以图像中心点作为变换中心cx = w / 2;cy = h / 2;double maxR = Math.Max(cx, cy); // 最大变换半径Cv2.LinearPolar(image, result_image, new Point2f(cx, cy), maxR, InterpolationFlags.Linear);Cv2.Rotate(result_image, result_image, RotateFlags.Rotate90Counterclockwise);pictureBox2.Image = new Bitmap(result_image.ToMemoryStream());}private void button3_Click(object sender, EventArgs e){image_path = "test_img/1.jpg";image = new Mat(image_path);pictureBox1.Image = new Bitmap(image_path);result_image = new Mat();float h, w, cx, cy;h = (float)image.Height;w = (float)image.Width;//以图像中心点作为变换中心cx = w / 2;cy = h / 2;Cv2.LogPolar(image, result_image, new Point2f(cx, cy), 80, InterpolationFlags.Linear | InterpolationFlags.WarpFillOutliers);Cv2.Rotate(result_image, result_image, RotateFlags.Rotate90Counterclockwise);pictureBox2.Image = new Bitmap(result_image.ToMemoryStream());}private void pictureBox2_DoubleClick(object sender, EventArgs e){Common.ShowNormalImg(pictureBox2.Image);}private void pictureBox1_DoubleClick(object sender, EventArgs e){Common.ShowNormalImg(pictureBox1.Image);}}
}
其他
结合印章检测和OCR识别,可实现印章文字识别。
印章检测 C# PaddleDetection yolo 印章检测
OCR识别 C# OpenVINO 通用OCR识别 文字识别 中文识别 服务
下载
Demo下载
相关文章:
C# OpenCvSharp 环形文字处理 直角坐标与极坐标转换
效果1 效果2 项目 代码 using OpenCvSharp; using System; using System.Drawing; using System.Text; using System.Windows.Forms;namespace OpenCvSharp_Demo {public partial class frmMain : Form{public frmMain(){InitializeComponent();}string fileFilter "*.*…...
计算机视觉与深度学习 | 视频/图像转换及保存播放(Matlab源码)
===================================================== github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 ===================================================== 视频/图像转换及保存/播放 avi2img.m 功能:将视频转换为单张图片avi2m…...
网格变形算法
网格变形 需求分析技术分析 需求分析 根据几何模型上的几个特征点,对几何模型进行变形。比如 技术分析 把几何模型使用三角面片表示,然后通过网格映射变形进行实现。关于网格这块有本经典的书可以参考,《ploygon mesh processing》。上面…...
2. Spark报错,Task is Failed,errorMsg: FileNotFoundException xxxx
完整报错信息 21304, Task is Failed,errorMsg: FileNotFoundException: File does not exist: hdfs://xxxx-bigdata-nameservice/user/hive/warehouse/edw_ic.db/xxxx/part-00000-c8a718b3-54b3-42de-b36c-d6eedefd2e02-c000.snappy.parquet It is possible the xxx报错场景 …...
Flutter开发实战之上传身份照片并认证
思路 UI视图 上传身份证照片可以选择拍照方式上传,相册选择方式上传即可 身份证照片进行认证功能实现 对身份证照片进行认证,包括正面认证和反面认证即可上传给后端 使用第三方插件 image_picker: ^0.8.4Future<XFile> _getCameraImage() async {final cameraImages = …...
C++文件加密、解密
简介 在计算机科学中,密码学是一种通过编码和解码信息以保护数据安全的技术。C++作为一种通用编程语言,可用于实现各种密码学算法。本文将介绍如何使用C++对文件进行加密和解密。以下是使用C++进行文件加密的示例。 文件加密 在C++中,我们可以使用密码学中的异或(XOR)操作…...
使用Java语言实现基本RS触发器
使用Java语言实现计算机程序来模拟基本RS触发器的工作过程,通过本账号2023年10月17日所发布博客“使用Java语言实现数字电路模拟器”中模拟基本逻辑门组成半加器电路的方法来模拟基本触发器的组成和时间延迟。 1 基本RS触发器电路结构 基本RS触发器(又…...
c++函数指针作为std::map值
遇见一个场景,收到的tcp消息有个OperationID,然后执行具体的任务(函数),在c#中使用Dictionary结合委托一点没问题,c#代码如下: public delegate void TcpHandler();Dictionary<OperateID, Tc…...
data对象内新增属性,console.log()可以打印出来,不重新渲染
原因:受 ES5 的限制,Vue.js 不能检测到对象属性的添加或删除。因为 Vue.js 在初始化实例时将属性转为 getter/setter,所以属性必须在 data 对象上才能让 Vue.js 转换它,才能让它是响应的; data(){newTitle:{title:’…...
React:实现一个定时器计数器,每秒自动+1
需求:实现一个定时器计数器,每秒自动1 import React, { useState, useEffect } from "react";export default function App() {let [count, setCount] useState(0);useEffect(() > {let timer setInterval(() > {setCount(count 1);…...
rocksdb 中 db_bench 的使用方法
硬件要求 硬件要求如表1所示。 表1 硬件要求 项目 说明 CPU 12 * AMD Ryzen 5 5500U with Radeon Graphics 内存 DDR4 磁盘 HDD 软件要求 软件要求如表2所示。 表2 软件要求 项目 版本 说明 下载地址 CentOS 7.6 操作系统。 Download kernel 4.14.0 内核。…...
【前端】TypeScript核心知识点讲解
1.TypeScript简介及入门案例 (1)什么是TypeScript? TypeScript 是 JavaScript 的一个超集,支持 ECMAScript 6 (ES6)标准。 TypeScript 由微软开发的自由和开源的编程语言。 TypeScript 设计目标是开发大…...
【工具推荐】一键多平台文章发布神器推荐(免费)
hello,大家好,我是你们老朋友洛林,上一篇文章说到自己深受多平台手动发布的折磨「传送门」,准备开发一款文章多平台工具,后来联系到 Wechatsync 原作者进行了简单的沟通,下面是关于以后的一些规划ÿ…...
PDF有限制密码,不能复制怎么办?
大家现在接触PDF文件越来越多,有的时候在网上下载的PDF文件打开之后,发现选中文字之后无法复制。甚至其他功能也都无法使用,这是怎么回事?该怎么办? 当我们发现文件打开之后,编辑功能无法使用,很…...
【原创学位论文】基于python和定向爬虫的商品比价系统.docx
基于python和定向爬虫的商品比价系统 Price Comparison System for Products Based on Python and Targeted Web Crawling 目录 目录 2 摘要 3 关键词 3 第一章 绪论 4 1.1 研究背景 4 1.2 研究意义 5 1.3 国内外研究现状 7 1.4 本文主要工作和章节安排 8 第二章 Python基础…...
【Proteus仿真】【STM32单片机】汽车尾灯控制设计
文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真STM32单片机控制器,使用按键、LED模块等。 主要功能: 系统运行后,系统运行后,系统开始运行,K1键控制左转向灯ÿ…...
多线程—锁
多线程中,锁用于确保同一时间只有一个线程可以访问共享资源,从而避免并发访问导致的数据不一致或者竞争条件等问题。 常见的锁有两种:互斥锁和读写锁。互斥锁的作用是保护共享资源,同时只允许一个线程访问,其他线程需…...
uniapp使用vue
uniapp集成了Vuex,,并不需要安装vuex 定义自己的vuex vuex中独立命名空间: 可以在模块中使用 namespaced 属性,设置为 true,,这样做的好处是,,不同模块之间的state,mut…...
能源监测管理系统有哪些作用与效果?
随着全球能源的不断增加,能源的有限性与环境问题日益严重,用能管理企业需要一种高效的方法来管理能源与利用能源,因此能源监测管理系统成为了一种不可或缺的工具。 能源监测管理系统的重要性 1、实现节能减排的目标 通过系统,可…...
数据分析是什么?
第一章- 数据分析是什么 数据分析是指 根据分析目的,用适当的分析方法及工具,对数据进行分析,提取有价值的信息,形成有效结论的过程。 数据分析的作用 通过观察数据,知道当前发生什么?通过具体的数据拆解…...
网络六边形受到攻击
大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...
【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...
网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...
全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...
解读《网络安全法》最新修订,把握网络安全新趋势
《网络安全法》自2017年施行以来,在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂,网络攻击、数据泄露等事件频发,现行法律已难以完全适应新的风险挑战。 2025年3月28日,国家网信办会同相关部门起草了《网络安全…...
群晖NAS如何在虚拟机创建飞牛NAS
套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...
论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing
Muffin 论文 现有方法 CRADLE 和 LEMON,依赖模型推理阶段输出进行差分测试,但在训练阶段是不可行的,因为训练阶段直到最后才有固定输出,中间过程是不断变化的。API 库覆盖低,因为各个 API 都是在各种具体场景下使用。…...
掌握 HTTP 请求:理解 cURL GET 语法
cURL 是一个强大的命令行工具,用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中,cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...
