11.4OpenCV_图像预处理习题02

1.身份证号码识别(结果:身份证号识别结果为:911124198108030024)

import cv2
import numpy as np
import paddlehub as hub

def get_text():
    img = cv2.imread("images1/images/shenfen03.jpg")
    # 灰度化
    gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    # 高斯
    gs_img = cv2.GaussianBlur(gray_img, (9, 9), 0)
    # 腐蚀
    ero_img = cv2.erode(gs_img, np.ones((11, 11), np.uint8))
    # 边缘
    cany_img = cv2.Canny(ero_img, 70, 300)
    cv2.imshow("Canny Image", cany_img)
    # 轮廓
    contours, _ = cv2.findContours(cany_img, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
    # 创建一个与原始图像同样大小的黑色图像
    contour_img = np.zeros_like(img)
    # 在黑色图像上绘制轮廓
    cv2.drawContours(contour_img, contours, -1, (255, 255, 255), 2)
    # 显示轮廓图像
    cv2.imshow("Contours", contour_img)

    for contour in contours:
        x, y, w, h = cv2.boundingRect(contour)
        print(w,h)
        if w > 200 and h < 70:
            cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2)
            out_img = img[y:y + h, x:x + w]

    # # 绘制所有轮廓的矩形框
    # for contour in contours:
    #     x, y, w, h = cv2.boundingRect(contour)
    #     # 移除条件判断,为每个轮廓绘制矩形框
    #     cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2)
    cv2.imshow("title", img)
    # 显示原始图像上的矩形
    cv2.imshow("title", out_img)
    cv2.waitKey(0)


    #加载模型
    ocr = hub.Module(name="chinese_ocr_db_crnn_server")
	#识别文本
    results = ocr.recognize_text(images=[out_img])
    for result in results:
        data = result['data']
        for x in data:
            print('文本: ', x['text'])

    cv2.destroyAllWindows()

if __name__ == "__main__":
    get_text()

2.车牌识别

import cv2
import numpy as np
import paddlehub as hub

def get_text():
    img = cv2.imread("images1/images/car6.png")
    # 灰度化
    gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    # 顶帽
    eroded = cv2.morphologyEx(gray_img, cv2.MORPH_TOPHAT, np.ones((9,9), np.uint8))
    # 高斯
    gs_img = cv2.GaussianBlur(eroded, (9, 9), 2)
    # 边缘
    cany_img = cv2.Canny(gs_img, 170, 180)
    # 膨胀
    eroded2 = cv2.dilate(cany_img,np.ones((17,17), np.uint8), iterations=2)
    # 轮廓
    contours, _ = cv2.findContours(eroded2, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
    # 创建一个与原始图像同样大小的黑色图像
    contour_img = np.zeros_like(img)
    # 在黑色图像上绘制轮廓
    cv2.drawContours(contour_img, contours, -1, (255, 255, 255), 2)
    # 显示轮廓图像
    cv2.imshow("Contours", contour_img)

    for contour in contours:
        x, y, w, h = cv2.boundingRect(contour)
        print(w,h)
        if w > 20 and h > 20:
            cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2)
            out_img = img[y:y + h, x:x + w]
        cv2.imshow("title", out_img)
        cv2.waitKey(0)
        cv2.destroyAllWindows()
    # # 绘制所有轮廓的矩形框
    # for contour in contours:
    #     x, y, w, h = cv2.boundingRect(contour)
    #     # 移除条件判断,为每个轮廓绘制矩形框
    #     cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2)
    # cv2.imshow("title", img)
    # 显示原始图像上的矩形

    #加载模型
    ocr = hub.Module(name="chinese_ocr_db_crnn_server")
	#识别文本
    results = ocr.recognize_text(images=[out_img])
    for result in results:
        data = result['data']
        for x in data:
            print('文本: ', x['text'])



if __name__ == "__main__":
    get_text()


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/908767.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【AI绘画】ComfyUI - AnimateDiff基础教程和使用心得

AnimateDiff是什么&#xff1f; AnimateDiff 是一个能够将个性化的文本转换为图像的扩展模型&#xff0c;它可以在无需特定调整的情况下实现动画效果。通过这个项目&#xff0c;用户可以将他们的想象力以高质量图像的形式展现出来&#xff0c;同时以合理的成本实现这一目标。随…

【docker】docker 环境配置及安装

本文介绍基于 官方存储库 docker 的环境配置、安装、代理配置、卸载等相关内容。 官方安装文档说明&#xff1a;https://docs.docker.com/engine/install/ubuntu/ 主机环境 宿主机环境 Ubuntu 20.04.6 LTS 安装步骤 添加相关依赖 sudo apt-get update sudo apt-get install…

一二三应用开发平台自定义查询设计与实现系列3——通用化重构

通用化重构 前面我们以一个实体为目标对象&#xff0c;完成了功能开发与调试。 在此基础上&#xff0c;我们对功能进行重构&#xff0c;使其成为平台的标准化、通用化的功能。 前端重构 首先&#xff0c;先把自定义组件挪到了平台公共组件目录下&#xff0c;如下&#xff1…

国标GB28181视频平台EasyCVR私有化视频平台工地防盗视频监控系统方案

一、方案背景 在当代建筑施工领域&#xff0c;安全监管和防盗监控是保障工程顺利进行和资产安全的关键措施。随着科技进步&#xff0c;传统的监控系统已不足以应对现代工地的安全挑战。因此&#xff0c;基于国标GB28181视频平台EasyCVR的工地防盗视频监控系统应运而生&#xf…

征程 6 工具链性能分析与优化 2|模型性能优化建议

01 引言 为了应对低、中、高阶智驾场景&#xff0c;以及当前 AI 模型在工业界的应用趋势&#xff0c;地平线推出了征程 6 系列芯片。 在软硬件架构方面&#xff0c;征程 6 不仅保持了对传统 CNN 网络的高效支持能力&#xff0c;还强化了对 Transformer 类型网络的支持&#xf…

【真题笔记】16年系统架构设计师要点总结

【真题笔记】16年系统架构设计师要点总结 存储部件接口嵌入式处理器产品配置配置管理用户文档系统文档CMM&#xff08;能力成熟度模型&#xff09;螺旋模型敏捷软件开发的方法学软件工具面向对象的分析模型设计模型COP&#xff08;面向构件的编程&#xff09;构件原子构件模块S…

GR2——在大规模视频数据集上预训练且机器人数据上微调,随后预测动作轨迹和视频(含GR1详解)

前言 上个月的24年10.9日&#xff0c;我在朋友圈看到字节发了个机器人大模型GR2&#xff0c;立马去看了下其论文(当然了&#xff0c;本质是个技术报告) 那天之后&#xff0c;我就一直想解读这个GR2来着 然&#xff0c;意外来了&#xff0c;如此文《OmniH2O——通用灵巧且可全…

Autocad2018

链接: https://pan.baidu.com/s/1MTd0gc5Q5zoKFnPNwk1VXw 提取码: x15v

把握数字化新趋势,迎接生态架构新时代——The Open Group 2024生态系统架构·可持续发展年度大会参会指南

距离大会还有&#xff1a;22天 在数字化转型的浪潮中&#xff0c;如何抓住机遇&#xff0c;实现可持续发展&#xff0c;已成为各行各业关注的焦点。The Open Group 2024生态系统架构可持续发展年度大会&#xff0c;将于2024年11月22日在北京国贸大酒店隆重举行。本次大会汇聚全…

OpenGL入门006——着色器在纹理混合中的应用

本节将理解顶点和片段着色器在纹理混合中的应用 文章目录 一些概念纹理时间依赖动画 实战简介dependenciesshader.fsshader.vsteenager.pngtex.png utilswindowFactory.hshader.hRectangleModel.hRectangleModel.cpp main.cppCMakeLists.txt最终效果 一些概念 纹理 概述&…

Spring Cloud Bus快速入门Demo

1.什么是Spring Cloud Bus&#xff1f; Spring Cloud Bus 是一个用于将分布式系统的节点连接起来的框架&#xff0c;它使用了轻量级消息代理来实现节点之间的通信。Spring Cloud Bus 可以将配置变更事件、状态变更事件和其他管理事件广播到系统中的所有节点&#xff0c;以便于…

通过Wireshark抓包分析,体验HTTP请求的一次完整交互过程

目录 一、关于Wireshark 1.1、 什么是Wireshark 1.2、下载及安装 二、HTTP介绍 2.1、HTTP请求过程介绍 2.2 、TCP协议基础知识 2.2.1、概念介绍 2.2.2、TCP协议的工作原理 2.2.3、三次握手建立连接 2.3.4、四次挥手断开连接 2.3、Wireshark抓包分析过程 2.3.1、三次握…

聚观早报 | 比亚迪腾势D9登陆泰国;苹果 iOS 18.2 将发布

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 11月5日消息 比亚迪腾势D9登陆泰国 苹果 iOS 18.2 将发布 真我GT7 Pro防尘防水细节 小米15 Ultra最快明年登场 …

tomcat 开启远程debug模式

1.修改位置 CATALINA_OPTS"-Xdebug -Xrunjdwp:transportdt_socket,address*:8000,servery,suspendn"2.修改环境变量的方式 apache-tomcat-9.0.86/bin/setenv.sh export JAVA_HOME/opt/jdk1.8.0_171 export CATALINA_HOME/opt/apache-tomcat-9.0.86 export JAVA_OP…

【工具变量】中国制造2025试点城市数据集(2000-2023年)

数据简介&#xff1a;《中国制造2025》是中国ZF于2015年5月8日印发的一项战略规划&#xff0c;旨在加快制造业的转型升级&#xff0c;提升制造业的质量和效益&#xff0c;实现从制造大国向制造强国的转变。该规划是中国实施制造强国战略的第一个十年行动纲领&#xff0c;明确提…

VScode的C/C++点击转到定义,不是跳转定义而是跳转声明怎么办?(内附详细做法)

以最简单的以原子的跑马灯为例&#xff1a; 1、点击CtrlShiftP&#xff0c;输入setting&#xff0c;然后回车 2、输入Browse 3、点击下面C_Cpp > Default > Browse:Path里面添加你的工程路径 然后就可以愉快地跳转定义啦~ 希望对你有帮助&#xff0c;如果还不可以的话&a…

java常用框架介绍

1. Spring Boot 特点&#xff1a;Spring Boot是Spring家族中的一个新成员&#xff0c;它基于Spring 4.0设计&#xff0c;提供了默认配置、简化依赖管理以及内嵌式容器等特性&#xff0c;使得开发者能够快速创建独立的、生产级别的Spring应用。 用途&#xff1a;Spring Boot特别…

Leetcode328奇偶链表,Leetcode21合并两个有序链表,Leetcode206反转链表 三者综合题

题目描述 思路分析 这题的思路就和我们的标题所述一样&#xff0c;可以看作是这3个题的合并&#xff0c;但是稍微还有一点点区别 比如&#xff1a;奇偶链表这道题主要是偶数链在了奇数后面&#xff0c;字节这个的话是奇偶链表分离了 所以字节这题的大概思路就是&#xff1a; …

自监督学习:机器学习的未来新方向

引言 自监督学习&#xff08;Self-Supervised Learning, SSL&#xff09;是近年来机器学习领域的一个重要发展方向&#xff0c;迅速成为许多研究和应用的热点。与传统的监督学习不同&#xff0c;自监督学习利用未标注数据&#xff0c;通过设计自我生成标签的任务&#xff0c;帮…

【算法】Prim最小生成树算法

目录 一、思想 二、代码 在阅读本文前推荐优先食用&#xff1a; 【算法】Kruskal最小生成树算法-CSDN博客https://blog.csdn.net/Eristic0618/article/details/143312482?spm1001.2014.3001.5501 一、思想 Kruskal算法基于边的选择&#xff0c;因此更适用于稀疏图。而对于…