当前位置: 首页 > news >正文

沧州商城网站建设新广告法 做网站的

沧州商城网站建设,新广告法 做网站的,周口城乡建设局网站,怎么做刷会员网站OpenCV单词轮廓检测 0. 前言1. 策略分析2. 检测字符轮廓3. 检测单词轮廓相关链接 0. 前言 在根据文档图像执行单词转录时#xff0c;通常第一步是识别图像中单词的位置。我们可以使用两种不同的方法识别图像中的单词#xff1a; 使用 CRAFT、EAST 等深度学习技术使用基于 O… OpenCV单词轮廓检测 0. 前言1. 策略分析2. 检测字符轮廓3. 检测单词轮廓相关链接 0. 前言 在根据文档图像执行单词转录时通常第一步是识别图像中单词的位置。我们可以使用两种不同的方法识别图像中的单词 使用 CRAFT、EAST 等深度学习技术使用基于 OpenCV 的技术 在本节中我们将学习如何在不利用深度学习的情况下识别机器打印的单词。由于打印单词的背景和前景之间的对比度很高因此不需要像 YOLO 之类的模型来识别单个单词的位置在这种情况下使用 OpenCV 可以在计算资源非常有限的情况下获得解决方案唯一的缺点是准确率可能并非 100%准确率取决于扫描图像的质量如果扫描图像非常清晰则准确率可以接近 100%。 1. 策略分析 利用 OpenCV 识别图像中的单词策略如下所示 将图像转换为灰度图像放大图像中的内容膨胀操作可以将黑色像素扩散到相邻区域因此将同一单词的字符连接起来有助于确保同一个单词的字符之间的连接需要注意的是不能过度膨胀以至于将属于不同相邻单词的字符也连接起来连接字符后利用 cv2.findContours 在每个单词周围绘制一个边界框 2. 检测字符轮廓 (1) 加载图像并查看图像样本 import cv2, numpy as np img cv2.imread(1.png) img1 cv2.cvtColor(img, cv2.COLOR_RGB2BGR) import matplotlib.pyplot as plt,cv2 plt.imshow(img1) plt.show()(2) 将输入图像转换为灰度图像 img_gray cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)(3) 随机裁剪原始图像 crop img_gray[250:300,50:200] plt.imshow(crop,cmapgray) plt.show()(5) 二值化输入灰度图像 _img_gray np.uint8(img_gray 200)*255将小于 200 的像素的值置为 0而像素强度大于 200 的值置为 255。 (6) 查找图像中的字符轮廓 contours,hierarchy cv2.findContours(_img_gray,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)使用 cv2.findContours 函数可以通过将一组连续的像素创建为对象的单个区域来查找轮廓。 (7) 将阈值图像转换为三通道图像以便在字符周围绘制彩色边界框 thresh1 np.stack([_img_gray]*3,axis2)(8) 创建空白图像以便将 thresh1 中的相关内容复制到新图像中 thresh2 np.zeros((thresh1.shape[0],thresh1.shape[1]))(9) 获取轮廓并在轮廓所在的位置绘制一个矩形边界框同时将 thresh1 图像中与矩形边界框对应的内容复制到 thresh2 中 for cnt in contours:if cv2.contourArea(cnt)0:[x,y,w,h] cv2.boundingRect(cnt)if ((h5) (h100)):thresh2[y:(yh),x:(xw)] thresh1[y:(yh),x:(xw),0].copy()cv2.rectangle(thresh1,(x,y),(xw,yh),(255,0,0),2)在以上代码中只获取面积大于 5 像素的轮廓并且只获取边界框高度在 5 到 100 像素之间的那些轮廓这样可以排除可能是噪声的较小边界框并排除可能包含整个图像的大边界框。 (10) 绘制结果图像 fig plt.figure() fig.set_size_inches(20,20) plt.imshow(img1) plt.show()我们已经可以在字符周围绘制边界框但是如果想在单词周围绘制框则需要将单词中的像素组合成一个连续的单元。接下来我们利用膨胀技术在单词周围绘制边界框。 3. 检测单词轮廓 (1) 检查图像 thresh2 fig plt.figure() fig.set_size_inches(20,20) plt.imshow(thresh2) plt.show()接下来需要将不同字符的像素连接成一个集合使一个连续的像素集合构成一个单词。使用膨胀函数 cv2.dilate将白色像素扩散周围的像素中扩散程度由核大小决定。如果核大小为 5则白色区域的所有边界向外移动 5 个像素。 (2) 使用尺寸为 1x2 的核执行膨胀操作 dilated cv2.dilate(thresh2, np.ones((1,2),np.uint8), iterations1)将核大小指定为 1x2 (np.ones((1,2),np.uint8))以便相邻字符会出现交集cv2.findContours 可以包含彼此接近的字符。但是如果核大小过大膨胀后的单词可能会有一些交集导致一个边界框中包含多个单词。 (3) 获取膨胀图像的轮廓 contours,hierarchy cv2.findContours(np.uint8(dilated),cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)(5) 在原始图像上绘制膨胀后的图像轮廓 for cnt in contours:if cv2.contourArea(cnt)5:[x,y,w,h] cv2.boundingRect(cnt)if ((h5) (h100)):cv2.rectangle(img1,(x,y),(xw,yh),(255,0,0),2)(6) 绘制带有轮廓的原始图像 fig plt.figure() fig.set_size_inches(20,20) plt.imshow(img1) plt.show()从上图中可以看出我们获取了每个单词对应的边界框。本节的关键在于如何确定一组像素是否形成一个连通的单元如果一组像素没有形成一个单元使用膨胀进行处理膨胀会扩散黑色像素而侵蚀 (erode) 函数会扩散白色像素。 相关链接 OpenCV简介与图像处理基础 OpenCV图像运算 手写文本识别 YOLO 目标检测
http://www.hkea.cn/news/14443163/

相关文章:

  • 企业网站建设应注意哪些问题中国交通建设网站
  • 网站上切换语言是怎么做的最新新闻热点事件2022年1月
  • 如何找百度做网站建设工程招标公告在哪个网站
  • 泉州自助建站系统怎么上传网站到空间
  • 外贸网站建站用什么意思宽带开户多少钱
  • asp.net开发微网站开发html企业网站模板
  • 郑州快速建站价格网站文章排版工具
  • 网站建设静态部分报告总结wordpress和node.js
  • 江苏城乡建设教育网站临沂外贸网站建设
  • 安卓网站开发视频如何做的网站手机可以用
  • 网站开发公司介绍陕西网站备案 多久
  • 免费注册建网站安装wordpress要数据库
  • 网站开发实验总结天津百度seo排名优化软件
  • js特效网站龙岩kk网手机版
  • 网站制作方案策划书wordpress dux 1.5
  • 万网网站流量wordpress重复评论
  • 网站建设费是什么费用wordpress主题网址导航葬爱
  • 酒店网站建设注意什么谷歌广告优化
  • 怎么建立一个网站及推广余姚网站如何进行优化
  • 南乐网站开发呼和浩特建设网站
  • 网站怎么分工做图片街景位置识别
  • 南京网站建设哪里好可以浏览国外网站
  • 网站后台如何上传附件wordpress外贸建站教程
  • 晋城市住房保障和城乡建设局网站个人博客网站的建设结构图
  • 淮安网站建设案例公司网站建设需要要求什么
  • 家具公司网站模板下载网站做境外第三方支付
  • 厅网站建设中标公告app开发定制开发
  • 网站建设流程及细节上海网店代运营外包
  • 凡科网站建设多少钱做什网站好
  • 做风险代理案源的网站微信小程序开发注册