PaddleOCR 图片日期识别
目录
一 . 获取图片信息种对应坐标区域日期信息 (类型为1:http链接 类型为 2本地图片路径)
二 . ocr图片识别日期信息获取,调用获取图片区域相应位置方法
三 . 如有所需获取rtsp流回放格式
四 . 完整代码如下 (路径可根据自己实际需求替换)
当今数字化的时代,我们经常需要从图像中提取信息,以便进行后续的处理和分析。其中,日期 信息作为一种重要的时间标记,常常存在于各种图像中,例如照片、截图等。然而,要手动从图像中提取日期信息是一项耗时且繁琐的任务,特别是当图像数量庞大时。因此,我们需要一种自动化的方式来实现这一任务。
PaddleOCR 是一个基于 PaddlePaddle 深度学习框架的开源 OCR(Optical Character Recognition,光学字符识别)工具库,它提供了强大的文字识别功能,能够准确地从图像中识别出各种文字信息,包括日期。在本文中,我们将探讨如何利用 PaddleOCR 来实现图像中日期信息的自动识别。
本文要解决的问题:从图像中提取日期信息并生成rtsp视频回放URL
一 . 获取图片信息种对应坐标区域日期信息 (类型为1:http链接 类型为 2本地图片路径)
# 读取图片识别相应位置坐标获取 类型为1:http 类型为 2本地图片路径
def x_y_get(image,type):if type == 1:# Nginx图片的访问地址# image_url = "http://192.168.14.93:85/car_image/202306/20230601022933/em_1.jpg"image_url = image# 下载图片response = requests.get(image_url)image_data = response.content# 将图片数据加载为OpenCV图像image_array = np.frombuffer(image_data, np.uint8)image = cv2.imdecode(image_array, cv2.IMREAD_COLOR)else:# 读取图像image = cv2.imread(image)# 定义要截取的区域的坐标x, y, w, h = 20, 0, 800, 100 # 坐标# 截取图像区域cropped_image = image[y:y+h, x:x+w]# 将截取的图像转换为灰度图像gray_image = cv2.cvtColor(cropped_image, cv2.COLOR_BGR2GRAY)# # 展示处理后的图像# plt.imshow(cropped_image, cmap='gray')# plt.axis('off') # 关闭坐标轴# plt.show()return gray_image
二 . ocr图片识别日期信息获取,调用获取图片区域相应位置方法
# ocr图片识别日期信息获取
def paddle_ocr(path,type):# 调用--读取图片识别相应位置坐标获取gray_image = x_y_get(path,type)# 加载PaddleOCR模型ocr = PaddleOCR(use_angle_cls=True, lang='ch')# 定义一个函数来提取日期def extract_dates(ocr_result):dates = []for line in ocr_result:for word in line:# 中文过滤linee = re.sub('[\u4e00-\u9fa5]', '', word[1][0])# 识别结果将中文进行过滤,但是列表位置可能不一需要进行判断if linee != '':dates.append(linee)# 将结果进行join为时间格式dates = ' '.join(dates).replace('-','').replace(':','').replace(' ','').replace('—','').replace(':','')return dates# 执行OCR识别result = ocr.ocr(gray_image, cls=True)# 提取日期信息dates = extract_dates(result)return dates
三 . 如有所需获取rtsp流回放格式
# 对应字符串日期转换处理,获取前五秒时间与后五秒时间-- 组装成rtsp返回格式
def get_time(original_timestamp):# 解析字符串为datetime对象dt = datetime.strptime(original_timestamp, '%Y%m%d%H%M%S')# 往前五秒before_5_seconds = dt - timedelta(seconds=5)# 往后五秒after_5_seconds = dt + timedelta(seconds=5)# 转换回字符串格式(与原格式一致)before_5_str = before_5_seconds.strftime('%Y%m%d%H%M%S')after_5_str = after_5_seconds.strftime('%Y%m%d%H%M%S')# 组成rtsp回放所需格式time = '?starttime={}t{}z&endtime={}t{}z'.format(before_5_str[0:8], before_5_str[8:], after_5_str[0:8],after_5_str[8:])return time# ocr识别获取时间日期 类型为1--http 类型为2--本地
# res = paddle_ocr(r'http://192.168.14.93:85/car_image/202306/20230601022933/em_1.jpg',1)
res = paddle_ocr(r'D:\python_project\uu\Seal_monitoring_system\static\em_16.jpg',2)
print(res)# 获取rtsp前段流
rtsp ='rtsp://admin:1qaz2wsx!@QW@192.168.7.38:554/Streaming/tracks/101'# ocr时间日期传入来获取rtsp前后五秒格式--后段流
get_time_data = get_time(res)# 拼接为完整回放流
rtsp = rtsp+get_time_data
print(rtsp)
四 . 完整代码如下 (路径可根据自己实际需求替换)
import cv2
import re
import requests
import numpy as np
import matplotlib.pyplot as pltfrom paddleocr import PaddleOCR
from datetime import datetime, timedelta# 读取图片识别相应位置坐标获取 类型为1:http 类型为 2本地
def x_y_get(image,type):if type == 1:# Nginx图片的访问地址# image_url = "http://192.168.14.93:85/car_image/202306/20230601022933/em_1.jpg"image_url = image# 下载图片response = requests.get(image_url)image_data = response.content# 将图片数据加载为OpenCV图像image_array = np.frombuffer(image_data, np.uint8)image = cv2.imdecode(image_array, cv2.IMREAD_COLOR)else:# 读取图像image = cv2.imread(image)# 定义要截取的区域的坐标x, y, w, h = 20, 0, 800, 100 # 坐标# 截取图像区域cropped_image = image[y:y+h, x:x+w]# 将截取的图像转换为灰度图像gray_image = cv2.cvtColor(cropped_image, cv2.COLOR_BGR2GRAY)# # 展示处理后的图像# plt.imshow(cropped_image, cmap='gray')# plt.axis('off') # 关闭坐标轴# plt.show()return gray_image# ocr图片识别日期信息获取
def paddle_ocr(path,type):# 调用--读取图片识别相应位置坐标获取gray_image = x_y_get(path,type)# 加载PaddleOCR模型ocr = PaddleOCR(use_angle_cls=True, lang='ch')# 定义一个函数来提取日期def extract_dates(ocr_result):dates = []for line in ocr_result:for word in line:# 中文过滤linee = re.sub('[\u4e00-\u9fa5]', '', word[1][0])# 识别结果将中文进行过滤,但是列表位置可能不一需要进行判断if linee != '':dates.append(linee)# 将结果进行join为时间格式dates = ' '.join(dates).replace('-','').replace(':','').replace(' ','').replace('—','').replace(':','')return dates# 执行OCR识别result = ocr.ocr(gray_image, cls=True)# 提取日期信息dates = extract_dates(result)return dates# 对应字符串日期转换处理,获取前五秒时间与后五秒时间-- 组装成rtsp返回格式
def get_time(original_timestamp):# 解析字符串为datetime对象dt = datetime.strptime(original_timestamp, '%Y%m%d%H%M%S')# 往前五秒before_5_seconds = dt - timedelta(seconds=5)# 往后五秒after_5_seconds = dt + timedelta(seconds=5)# 转换回字符串格式(与原格式一致)before_5_str = before_5_seconds.strftime('%Y%m%d%H%M%S')after_5_str = after_5_seconds.strftime('%Y%m%d%H%M%S')# 组成rtsp回放所需格式time = '?starttime={}t{}z&endtime={}t{}z'.format(before_5_str[0:8], before_5_str[8:], after_5_str[0:8],after_5_str[8:])return time# ocr识别获取时间日期 类型为1--http 类型为2--本地
# res = paddle_ocr(r'http://192.168.14.93:85/car_image/202306/20230601022933/em_1.jpg',1)
res = paddle_ocr(r'D:\python_project\uu\Seal_monitoring_system\static\em_16.jpg',2)
print(res)# 获取rtsp前段流
rtsp ='rtsp://admin:1qaz2wsx!@QW@192.168.7.38:554/Streaming/tracks/101'# ocr时间日期传入来获取rtsp前后五秒格式--后段流
get_time_data = get_time(res)# 拼接为完整回放流
rtsp = rtsp+get_time_data
print(rtsp)
相关文章:
PaddleOCR 图片日期识别
目录 一 . 获取图片信息种对应坐标区域日期信息 (类型为1:http链接 类型为 2本地图片路径) 二 . ocr图片识别日期信息获取,调用获取图片区域相应位置方法 三 . 如有所需获取rtsp流回放格式 四 . 完整代码如下 (…...
HTML5学习记录
简介 超文本标记语言(HyperText Markup Language,简称HTML),是一种用于创建网页的标准标记语言。 编辑器 下载传送门https://code.visualstudio.com/ 下载编辑器插件 标题 标题通过 <h1> - <h6> 标签进行定义。 …...
提升法律文书起草效率:AlphaGPT 助力律师快速生成诉讼和仲裁文件
法律文书起草对于法律专业人士而言是一项基础而关键的任务。无论是民事、刑事还是行政诉讼,以及仲裁案件,精确的法律文书撰写对于案件的成功至关重要。然而,这一过程往往既耗时又复杂,尤其是在处理复杂的案情和面对当事人难以理解…...
大数据之 Hive 快速搭建的详细步骤
Hive hive 搭建三种模式: 内嵌模式本地模式远程模式内嵌模式 Hadoop 和 Hive 整合 修改 hadoop/etc/下的 core-site.xml: <property><name>hadoop.proxyuser.root.hosts</name><value>*</value> </property> <property><nam…...
从入门到高级的99个python知识点
大家好,想掌握Python编程语言,从零基础的小白晋升为大神?没问题!接下来我们将以轻松有趣的方式,逐一解锁Python学习路上的99个关键知识点。每一步都将结合实际应用场景、函数功能解析及简洁代码演示,带你深…...
设计模式之备忘录模式(上)
备忘录模式 1)概述 1.定义 在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,可以在以后将对象恢复到原先保存的状态。 2.作用 备忘录模式提供了一种状态恢复的实现机制,使得用户可以方便…...
算法中二分搜索详解
文章目录 在有序数组中找num是否存在实现思路实现代码(里面运用了对数器)在有序数组中找>num的最左位置实现思路代码实现 在有序数组中找<num的最右位置实现思路实现代码 二分搜索不一定发生在有序数组上(比如寻找峰值问题)题目描述实现思路实现代码 在有序数组中找num是…...
关于无线充电项目总结IP6826
1、电路 1.1 选用芯片IP6826英集芯 支持PD3.0 5-15W 1.2 推荐电路 讲解这个是官方推荐图 注意以下几点: NTC是100K的别买错了 L就是线圈 我这选用的A11 6.3 uH 淘宝买的 需要陪400nf NPO或CBB 还可以10uh配250nf(这个我没试过) 如果led2闪烁…...
[CSS]样式属性+元素设置
哎呀,好多东西,根本记不住,更多的还是边用边记吧,这里的代码就当使用范例,但其实如果可以让gpt应该会更好,哎学吧,反正记得住当然更好 文本 属性名描述word-break单词换行。取值如下࿱…...
优雅关闭jar程序shell 脚本
参考竽道Linux部署 #!/bin/bash set -eDATE$(date %Y%m%d%H%M) # 基础路径 BASE_PATH/work/projects/yudao-server # 服务名称。同时约定部署服务的 jar 包名字也为它。 SERVER_NAMEyudao-server # 环境 PROFILES_ACTIVEdev# heapError 存放路径 HEAP_ERROR_PATH$BASE_PATH/he…...
基于51单片机多功能洗衣机控制(强洗弱洗漂洗)设计( proteus仿真+程序+设计报告+原理图+讲解视频)
基于51单片机多功能洗衣机控制(强洗弱洗漂洗)设计( proteus仿真程序设计报告原理图讲解视频) 多功能洗衣机控制-强洗弱洗漂洗 1. 主要功能:2. 讲解视频:3. 仿真设计4. 程序代码5. 设计报告6. 原理图7. 设计资料内容清单资料下载链接…...
CVP(ChatGPT、Vector Database和Prompt)
CVP实际上指的是ChatGPT、Vector Database和Prompt的结合,这是一种新型的技术栈,用于构建智能应用。 首先,我们来看这三个组成部分: ChatGPT:这是一个强大的语言模型,它能够理解并生成自然语言文本。Chat…...
c语言-----数组知识汇总
前言 本文为我学习数组知识点之后,对c语言的数组部分进行的知识点汇总。 简单数组介绍 简单来说,数组就是一个数据组,像一个箱子,里面放有多个数据。 [1,2,3,4,5] 数组的定义 基础定义 语法: 数据类型 数组名[数组…...
【游戏开发之热更新技术】
游戏开发之热更新技术 热更新技术是指在不重新发布和安装应用的情况下,对已部署的应用程序进行更新和修补的技术。这种技术在现代软件开发中变得越来越重要,因为它能够为用户提供更加及时的服务和更好的体验。以下是一篇关于热更新技术的文章࿰…...
小红的白色字符串
题目描述 小红拿到了一个字符串,她准备将一些字母变成白色,变成白色的字母看上去就和空格一样,这样字符串就变成了一些单词。 现在小红希望,每个单词都满足以下两种情况中的一种: 1.开头第一个大写,其余为…...
Python+Django+Html网页版人脸识别考勤打卡系统
程序示例精选 PythonDjangoHtml人脸识别考勤打卡系统 如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助! 前言 这篇博客针对《PythonDjangoHtml网页版人脸识别考勤打卡系统》编写代码,代码整洁…...
第1章、react基础知识;
一、react学习前期准备; 1、基本概念; 前期的知识准备: 1.javascript、html、css; 2.构建工具:Webpack:https://yunp.top/init/p/v/1 3.安装node:npm:https://yunp.top/init/p/v/1 …...
物联网会用到哪些数据开发
物联网(IoT)涉及大量的设备和传感器,产生的数据种类繁多,因此在物联网领域进行数据开发时,可能涉及以下几个方面: 数据采集与存储: 设备数据采集:从各种传感器和设备中采集数据&…...
[Linux]一篇文章带你搞定软硬连接
阅读导览: 先在windows中先见见软硬连接从名字、inode等方面分析软硬连接如何实现软硬连接硬链接注意事项软硬链接都用来干什么如何在windows中实现硬链接 文章目录 概念简述文件系统windows下的快捷方式--软硬链接的直观体现角度1:文件名角度2ÿ…...
AI常见关键术语
哈喽,大家好,我是小码哥,人工智能技术的快速发展带来了许多专业术语,这些词汇对于理解AI的工作原理和应用至关重要。以下是一些关键的AI术语,以及它们的专业解释和通俗总结。 一、核心概念 人工智能 (AI) 专业解释&am…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...
CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...
uniapp微信小程序视频实时流+pc端预览方案
方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度WebSocket图片帧定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐RTMP推流TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...
如何在最短时间内提升打ctf(web)的水平?
刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...
零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...
如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...
服务器--宝塔命令
一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行! sudo su - 1. CentOS 系统: yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...
elementUI点击浏览table所选行数据查看文档
项目场景: table按照要求特定的数据变成按钮可以点击 解决方案: <el-table-columnprop"mlname"label"名称"align"center"width"180"><template slot-scope"scope"><el-buttonv-if&qu…...
永磁同步电机无速度算法--基于卡尔曼滤波器的滑模观测器
一、原理介绍 传统滑模观测器采用如下结构: 传统SMO中LPF会带来相位延迟和幅值衰减,并且需要额外的相位补偿。 采用扩展卡尔曼滤波器代替常用低通滤波器(LPF),可以去除高次谐波,并且不用相位补偿就可以获得一个误差较小的转子位…...
