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…...
[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?
🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...
3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...
Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...
CocosCreator 之 JavaScript/TypeScript和Java的相互交互
引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...
实现弹窗随键盘上移居中
实现弹窗随键盘上移的核心思路 在Android中,可以通过监听键盘的显示和隐藏事件,动态调整弹窗的位置。关键点在于获取键盘高度,并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...
自然语言处理——循环神经网络
自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM)…...
