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、实现节能减排的目标 通过系统,可…...
数据分析是什么?
第一章- 数据分析是什么 数据分析是指 根据分析目的,用适当的分析方法及工具,对数据进行分析,提取有价值的信息,形成有效结论的过程。 数据分析的作用 通过观察数据,知道当前发生什么?通过具体的数据拆解…...
利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...
应用升级/灾备测试时使用guarantee 闪回点迅速回退
1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...
基于FPGA的PID算法学习———实现PID比例控制算法
基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容:参考网站: PID算法控制 PID即:Proportional(比例)、Integral(积分&…...
【力扣数据库知识手册笔记】索引
索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...
SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...
k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...
基于Java+MySQL实现(GUI)客户管理系统
客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息,对客户进行统一管理,可以把所有客户信息录入系统,进行维护和统计功能。可通过文件的方式保存相关录入数据,对…...
C++.OpenGL (20/64)混合(Blending)
混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...
