《封号码罗》数据分析与人工智能之opencv(二)

Tesseract OCR从安装到实战:跨平台部署、Python集成与图像预处理全指南 光学字符识别(OCR)技术旨在将图像中的文字转换为可编辑和可搜索的文本数据,其核心原理是通过图像处理和模式识别算法定位并识别字符。这项技术在自动化办公、文档数字化、数据提取等领域具有重要价值,广泛应用于发票处理、档案管理和内容分析等场景。本文聚焦于开源OCR引擎Tesseract,深入解析其**跨平台安装部署**流程与**Python集成**方法,并重点探讨通过图像预处理技术提升识别精度的工程实践,为开发者提供从环境搭建到生产集成的完整解决方案。 阅读详情

第一部分

import numpy as np
import cv2
import time

jin1 = cv2.imread("jin1.jpg")
# jin1.shape (502, 400, 3)
# cv2.imshow("窗口名称",读进来的数组序列)
# cv2.waitKey(0)    # 等待键盘输入,单位毫秒,如果是0,无限等待
# cv2.destroyAllWindows()释放内存
# cv2.imshow("jin", jin1)
# cv2.waitKey(0)
# cv2.destroyAllWindows()
# cv2读取图片,颜色通道是BGR      pillow读取读取图片,颜色通道是RGB

# 把一张图片变成灰色             常量-->灰色
# jins = cv2.cvtColor(jin1, code=cv2.COLOR_BGR2GRAY)
# cv2.imshow("gray", jins)
# cv2.waitKey(0)
# cv2.destroyAllWindows()
# cv2.imwrite("jin3.jpg", jins)     # 保存图片

# 缩放图片                      宽   高
# jins = cv2.resize(jin1, dsize=(800, 1004))
# print(jins.shape)   (1004, 800, 3) 注意宽高的顺序变了
# cv2.imshow("big", jins)
# while True:
#           ord("A) 65 转化成ASCII码
#     if ord("q") == cv2.waitKey(1000):
#         break
# cv2.destroyAllWindows()

start = time.perf_counter()
end = time.perf_counter()
print(f"程序运行耗时为{(start - end).__round__(20)}")

第二部分

import numpy as np
import cv2
import time

# jin = cv2.imread("./jin1.jpg")
# jin = cv2.imread("./jin2.jpg")
jin = cv2.imread("qmx.jpg")
# 转成黑白图片,减少数据的计算量,绘制矩形时还绘制在彩色图片上面
gray = cv2.cvtColor(jin, code=cv2.COLOR_BGR2GRAY)
# cv2.imshow("cs", jin)
# cv2.waitKey(0)
# cv2.destroyAllWindows()
# 级联分类器,给人脸特征数据,返回可以识别人脸的对象
# detector 美 [dɪˈtektər] 探测器 detect 察觉 + or 器物 → 探测器
detector = cv2.CascadeClassifier("./haarcascade_frontalface_default.xml")
#           检测对象下面的方法detectMultiScale(),返回人脸数组
# 参数       都是限制条件       左上角开始扫描图片缩放比例 默认1.1  框选数量默认 3      框选识别区域的最大最小
face_zone = detector.detectMultiScale(gray, scaleFactor=1.3, minNeighbors=5, minSize=(20, 20), maxSize=(100, 100))

# x,y是人脸的左上角 w,h是人脸的宽高
# for x, y, w, h in face_zone:
#     # 画一个正方形                                                        边线的宽度
#     cv2.rectangle(jin, pt1=(x, y), pt2=(x + w, y + h), color=[0, 255, 0], thickness=2)
#     color = np.random.randint(0, 256, size=3)  # 生成随机颜色的数组
#     cv2.circle(jin, center=(x + w // 2, y + h // 2), radius=w // 2, color=color.tolist(), thickness=2)
# cv2.imshow("jin", jin)
# cv2.waitKey(0)
# cv2.destroyAllWindows()

# 识别视频里面的人脸
# cap = cv2.VideoCapture(0)     值为0,就会调取本地的摄像头
cap = cv2.VideoCapture("./yycyz.flv")
detector1 = cv2.CascadeClassifier("./haarcascade_frontalface_default.xml")
fps = cap.get(propId=cv2.CAP_PROP_FPS)  # 25 一秒25帧
height = cap.get(propId=cv2.CAP_PROP_FRAME_HEIGHT)  # 视频高度404.0
width = cap.get(propId=cv2.CAP_PROP_FRAME_WIDTH)  # 视频宽度720.0
# 参数一 文件保存名;参数二 视频编码格式要和文件名后缀统一;参数三 帧数;参数四 视频尺寸(整数宽高)
videoWriter = cv2.VideoWriter("./hn.mp4", cv2.VideoWriter_fourcc("M", "P", "4", "V"), 25.0,
                              (int(width), int(height)))  # 写视频的对象
while cap.isOpened():
    flag, frame = cap.read()
    gray = cv2.cvtColor(frame, code=cv2.COLOR_BGR2GRAY)
    face_zone1 = detector1.detectMultiScale(gray, scaleFactor=1.3, minNeighbors=5)
    for x, y, w, h in face_zone1:
        color = np.random.randint(0, 256, size=3)
        cv2.circle(frame, center=(x + w // 2, y + h // 2), radius=w // 2, color=[0, 0, 255], thickness=2)
        if flag == False:
            break
        # if ord("q") == cv2.waitKey(40):
        elif ord("q") == cv2.waitKey(10):
            break
        else:
            cv2.imshow("yycyz", frame)
            videoWriter.write(frame)
            # pass
cv2.destroyAllWindows()  # 释放窗口
cap.release()  # 释放资源

第三部分

import numpy as np
import time

# 归一化==正则化,将数据映射到0~1之间
# 概念:假设a是矩阵中的一个元素,max/min分别是矩阵元素的最大值最小值
#       正则化后a = (a -min)/(max - min)  另外a是整个数组对象,min/max是数组中的一维数组
# 新数组完全可以代表原来比较大的数据
# 去量纲,单位去掉了
a = np.random.randint(0, 100, size=(5, 5))
v_min = a.min(axis=0)
v_max = a.max(axis=0)
re_a = (a - v_min) / (v_max - v_min)  # 归一化

# 冒泡排序法
nd = np.random.randint(0, 100, size=20)
for i in range(20):
    for j in range(i, 20):
        if nd[i] > nd[j]:
            nd[i], nd[j] = nd[j], nd[i]
            
start = time.perf_counter()
print(nd)
end = time.perf_counter()
print(f"程序运行耗时为{(start - end).__round__(20)}")

第四部分

import numpy as np
from scipy.io import wavfile
import time
import subprocess  # 可以让代码像在命令行中一样使用

# 音乐也是ndarray,是一个二维数组
yanyu, sgi1 = wavfile.read("yycyz.wav")  # 返回元组(采样频率/秒,[左,右声道数组])
pasf, sgi2 = wavfile.read("pasf.wav")  # 返回元组(采样频率/秒,[左,右声道数组])

looger = 7378812 / 44100  # 167.32/60 长度2分47秒
# wavfile.write("./yy.wav", 44100, sgi1[::3])  # 保存
# wavfile.write("./yy.wav", 44100, sgi1[:60*44100])  # 保存前一分钟的数据
# wavfile.write("./yy.wav", 44100, sgi1[:60*44100][::-1])  # 保存前一分钟的数据,倒着保存
# 拼接两首歌曲
# music = np.concatenate([sgi1[:32 * 44100], sgi2[32 * 44100:60 * 44100]])
# wavfile.write("./music.wav", 44100, music)

# https://ffmpeg.zeranoe.com/builds/ 下载ffmpeg后 bin文件夹加入系统环境变量
# https://www.jianshu.com/p/ddafe46827b7 学习地址
#            开始位置                                            截取时长,非视频中的位置
# ffmpeg -ss 00:00:06 -i yycyz.flv -acodec copy  -vcodec copy -t 00:02:46 viewo1.mp4    视频截取
# ffmpeg -i yycyz.flv -vcodec copy -an yycyz1.mp4  从视频中提取无声视频
# ffmpeg -i yycyz.mp3 -i yycyz1.mp4 out.mp4 合并音频视频并输出
# 在代码中使用命令行操作
cmd = "ffmpeg -i yycyz.flv -vcodec copy -an yycyz1.mp4 "
a = subprocess.call(cmd, shell=True)  # 成功返回 0

start = time.perf_counter()
print(a)
end = time.perf_counter()
print(f"程序运行耗时为{(start - end).__round__(20)}")

cv2.circle函数 参数: import cv2 import numpy as np img = np.zeros((300, 400, 3), np.uint8) cv2.circle(img, (100, 60), 3, (0, 0, 213), -1) # x,y,r,color cv2.rectangle(img,(10,20),(30,40),(134,2,34),1)# (x1,y1)(... 阅读详情

相关推荐

43-OpenCVSharp —- Cv2.Circle()函数功能(绘制圆形)详解

是 OpenCV 中一个非常简单且强大的函数,适用于绘制圆形,可以广泛应用于图像注释、目标检测、特征点可视化等场景。在实际应用中,常与其他算法(如 Cv2.HoughCircles())结合使用,用于图像分析和处理。该函数非常灵活,支持多种参数配置,可以绘制不同颜色、不同线宽和不同样式的圆形。需要注意的是,绘制时可能会遇到性能瓶颈,尤其是在大量绘制操作的情况下,可以考虑优化方案或批量处理图像。

weixin_45590420的博客 3495

Python cv2.circle详细介绍

cv2.circle(img, center, radius, color[, thickness[, lineType[, shift]]]) 作用 根据给定的圆心和半径等画圆 参数说明 img:输入的图片data center:圆心位置 radius:圆的半径 color:圆的颜色 thickness:圆形轮廓的粗细(如果为正)。负厚度表示要绘制实心圆。 lineType: 圆边界的类型...

菜鸟的晋级之路 9万+

用Python 和 OpenCV 实现火车票的信息提取

档案电子化已经是大势所趋,而财务档案中的火车票自动识别是一个长期被关注的问题。下面给出一个提取中国火车票上的基本信息的算法的流程:图像识别:使用图像识别技术识别火车票上的文字信息。文字识别:对图像识别得到的文字信息进行识别,提取火车票上的基本信息。数据处理:对提取出的信息进行整理和格式化,得到清晰明了的信息。数据存储:将处理好的信息存储到数据库或者文件中,以便日后查询和使用。数据分析:对存储的信息进行分析,统计火车票的相关数据,如乘车人数、乘车路线等。

Programming Talk 1454

Opencv中circle(),line(),cv2.rectangle(),cv2.putText()

Opencv中circle(),line(),cv2.rectangle(),cv2.putText()

AX642511931的博客 9977

基于Python实现身份证信息识别

身份证是一种重要的证件,包含了个人的基本信息,如姓名、性别、出生日期、住址等。在实际应用中,有时需要对身份证进行自动化的识别,以提高工作效率和准确性。本文将介绍如何使用Python实现身份证信息的识别,通过图像预处理、OCR技术和解析算法,实现对身份证号码和其他信息的提取和解析。

商务合作 / 项目定制 / 学习交流。个人vx:lovely_wml 1万+

零成本矩阵玩法:1人运营5个账号的自动化工具链配置(2025全平台实战)

通过“AI内容生产+工具链分发+自动化变现”的组合拳,即使是新手也能实现1人运营5个账号的规模化收益。关键在于选对工具与设计标准化流程。未来,矩阵运营的竞争将聚焦于工具使用效率与数据洞察深度,快人一步者方能抢占先机!

TuFuir的博客 3784

青苹果影视系统源码v1.3.20 多功能开源影视源码

简介: 安装方法特别简单上传服务器即用无需修改任何配置。 使用青苹果系统(maccms)可以快速搭建一个免更新、免维护的聚合、导航、点播网站。 功能列表: 1、数据模块 一键对接市面上的资源站API接口、现已支持FeiFeiCms、MacCms、MaxCms、SeaCms等常用的CMS接口。 2、自适应模板 系统支持一套模板自适应电脑、手机、平板、公众号等多个终端入口,也可以独立设置移动端与PC端模板分离。 3、点播模块 视频模块的基础在线点播功能,使用大名鼎鼎的Dplayer作为H5播放器、常见的包括m

banzhuan678的博客 4867

维护测试监控LLM应用

LangFuse: 开源 + SaaS(免费/付费),LangSmith 平替,可集成 LangChain 也可直接对接 OpenAI API;LangSmith: LangChain 的官方平台,SaaS 服务(免费/付费),非开源,企业版支持私有部署;调试 Prompt 的 Playground测试/验证系统的相关指标数据集管理各种指标监控与统计:访问量、响应时长、Token 费等等。

SunnyRivers 1774

遥感数据获取、处理、分析到模型搭建全流程学习!DeepSeek、Python、OpenCV驱动空天地遥感数据分析

从无人机监测农田到卫星数据支持气候研究,空天地遥感数据正以前所未有的方式为科研和商业带来深刻变革。然而,对于许多专业人士而言,如何高效地处理、分析和应用遥感数据仍是一个充满挑战的课题。

weixin_46747075的博客 1658

运算放大器基础1——用作比较器

运算放大器,运放,在电路设计中非常常见。在图2中,当前状态下,开关切换到0V,“正相输入”和“负相输入”都是接地,运放两个输入端电压相同。最后,调节可变电阻,使其两端电压大于3.37V,比如3.43V,作为运放正相输入,由于电压大于反相输入,LED点亮(运放输出为5V)。其次,调节可变电阻,使其两端电压小于3.37V,比如2.09V,作为运放正相输入,由于电压小于反相输入,LED不点亮。好,现在我们将0.1V电源换个方向,这样实际“正相输入”的是-0.1V,比“负相输入”的电压要低,看看输出是什么?

m0_60069998的博客 6122

Qlib上手学习记录

Qlib 是一个面向人工智能的量化投资平台,其目标是通过在量化投资中运用AI技术来发掘潜力、赋能研究并创造价值,从探索投资策略到实现产品化部署。该平台支持多种机器学习建模范式,包括有监督学习、市场动态建模以及强化学习等。真的是走了很多弯路step 1. 使用 ananconda 建立环境,要主要必须是 python 3.8失败的下了以后 进入 glib folder 后执行是会报错的,不管你还什么source 都一样,整了很久使用前最好看下这个。

chenchihwen的专栏 3099

人工智能开源库有哪些

人工智能开源库

zhangzhechun的专栏 1447

SpringBoot实战(二十八)集成 Collabora Online 实现在线编辑

SpringBoot实战(二十八)集成 Collabora Online 实现在线编辑

ACGkaka的博客 6979

OpenCV人脸识别资源文件:开启智能识别新篇章

OpenCV人脸识别资源文件:开启智能识别新篇章 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在人工智能技术飞速发展的当下,人脸识别技术已经成为智能应用领域的一大亮点。今天,我们就来介绍一款开源项目——OpenCV人脸识别资源文件。这个项目提供了一个包含多个XML文件的压缩包,这些XML文件是进行人脸识别的宝贵资源,能够帮助开发者快速实现人脸、眼睛、鼻子和嘴等部位的...

gitblog_06776的博客 390

LoRa正点原子模块组网步骤

按照我上一篇的博客和视频演示,相信大家一定都可实现了lora模块点对点的通信了。那我们来进行一个比较有高难度的设计吧! 使用多个loRa模块去完成一个组网设计: 在这之前一定要配置模块信息为定点传输 AT+TMODDE要等于1奥 第一步分析通讯协议: 点对点通讯是在透明传输的条件下,地址和信道都是一样的,直接发送接受数据。 组网呢我们利用是: 定向传输就是 A、B的地址、信道不同 假如A是要想B发送信息就用函数来下面: int b[5]...

weixin_43205178的博客 4082

ThingsBoard PE专业版解决方案技术文档——温度&湿度

温湿度解决方案

weixin_67440240的博客 817

用Python OpenCV实现车牌识别界面,对于Python零基础C语言一般学生做毕设来说难度大吗?

OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉库,广泛应用于图像处理和视频分析领域。它不仅支持多种编程语言,如Python、C++等,还提供了大量的算法和工具,帮助开发者快速实现各种图像处理任务。

cda2024的博客 978

【WRF教程第3.5期】预处理系统 WPS 详解:以4.5版本为例

预处理系统 WPS 详解:以4.5版本为例

WW、forever的博客 1422

总结全网最详细的Python库总结

库名称简介 Chardet 字符编码探测器,可以自动检测文本、网页、xml的编码。 colorama 主要用来给文本添加各种颜色,并且非常简单易用。 Prettytable 主要用于在终端或浏览器端构建格式化的输出。 difflib,[Python]标准库,计算文本差异Levenshtein,快速计算字符串相似度。 fuzzywuzzy 字符串模糊匹配。 esmre 正则表达式的加速器。 shortuuid 一组简洁URL/UUID函数库。 ftfy,Unicode文本工具7。 unide

bug中的极品!!!专治BUG 1064

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

基于Python智慧停车场系统(源码+运行说明)

本文介绍了一个基于Python技术的智慧停车场管理系统设计方案。针对传统停车场管理效率低、资源利用不足等问题,系统整合物联网、大数据和人工智能技术,实现车位状态实时监测、智能车牌识别、无人化支付结算等核心功能。系统采用Python+Django框架开发,前端使用HTML/CSS/JS,数据库采用MySQL8,已通过严格测试确保稳定运行。主要功能包括智能车牌识别、数据可视化展示、灵活收费管理、车流监控和权限管理等,能显著提升停车场运营效率和用户体验,为智慧城市建设提供有效解决方案。

鑫鑫源码工作室的博客 1878

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

大部分Python库

今天给大家总结整理了1000+常用Python库,主要分为以下几个部分???? 另外,除了像上图一样按目录查看,也可以直接搜索关键词!如果你是在手机查看,可以点击右上角的“···”,再选择搜索页面内容即可;电脑端建议用网页打开,Ctrl+F即可。 Python常用库 Chardet字符编码探测器,可以自动检测文本、网页、xml的编码。 colorama主要用来给文本添加各种颜色,并且非常简单易用。 Prettytable主要用于在终端或浏览器端构建格式化的输出。 difflib,[Pytho

cxs812760493的博客 676

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

基于YOLOv8的车牌识别系统【附源码】

摘要:本文设计并实现了一种基于YOLOv8的车牌识别系统,该系统包含图像采集、预处理、车牌检测与识别等功能模块。实验结果表明,系统车牌检测准确率达90%,字符识别准确率达85%。通过采用YOLOv8模型和TesseractOCR技术,系统实现了高效准确的车牌识别,为智能交通管理和公共安全提供了有效解决方案。未来可通过模型优化、数据集扩展等方式进一步提升系统性能。

m0_74320616的博客 70

MagicX AI智能补全:从语义理解到工程实践的完整指南

自动补全技术作为提升用户体验的关键组件,其核心原理从传统的前缀匹配演进到基于大语言模型的语义理解。通过Transformer架构实现自然语言处理,智能补全能够理解用户意图、纠正拼写错误,并结合上下文提供精准建议。在工程实践中,这种技术通过SDK集成、缓存优化和性能监控,显著提升了用户转化率和交互效率。特别是在电商搜索、技术文档等应用场景中,MagicX AI Autocomplete展示了从关键词匹配到意图理解的技术突破,为开发者提供了完整的解决方案。

weixin_30443731的博客 401

我用Python,3分钟快速实现,9种经典排序算法的可视化

欢迎关注天善智能,我们是专注于商业智能BI,人工智能AI,大数据分析与挖掘领域的垂直社区,学习,问答、求职一站式搞定! 对商业智能BI、大数据分析挖掘、机器学习,python,R等数据领域感兴趣的同学加微信:tstoutiao,邀请你进入数据爱好者交流群,数据爱好者们都在这儿。 作者:爱笑的眼睛公众号:恋习Python最近在某网站上看到一个视频,是关于排...

简书博客搬家测试账号 240
上一篇: 《封号码罗》数据分析与人工智能之numpy(一)
下一篇: 《封号码罗》数据分析与人工智能之pandas(三)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值