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

wordpress 两个网站搜索引擎优化网页

wordpress 两个网站,搜索引擎优化网页,科技有限公司是干什么的,新网站建设服务1 引言 汽车车牌识别#xff08;License Plate Recognition#xff09;是一个日常生活中的普遍应用#xff0c;特别是在智能交通系统中#xff0c;汽车牌照识别发挥了巨大的作用。汽车牌照的自动识别技术是把处理图像的方法与计算机的软件技术相连接在一起#xff0c;以准…1 引言 汽车车牌识别License Plate Recognition是一个日常生活中的普遍应用特别是在智能交通系统中汽车牌照识别发挥了巨大的作用。汽车牌照的自动识别技术是把处理图像的方法与计算机的软件技术相连接在一起以准确识别出车牌牌照的字符为目的将识别出的数据传送至交通实时管理系统以最终实现交通监管的功能。在车牌自动识别系统中从汽车图像的获取到车牌字符处理是一个复杂的过程主要分为四个阶段图像获取、车牌定位、字符分割以及字符识别。目前关于车牌识别的算法有很多本文基于opencv构建了车牌识别的整个流程供大家学习参考。 1 车牌识别概述 1.1 opencv介绍 OpenCV的全称是Open Source Computer Vision Library。OpenCV是一个基于开源发行的跨平台计算机视觉库可以运行在Linux、Windows和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C 类构成同时提供了Python、Ruby、MATLAB等语言的接口实现了图像处理和计算机视觉方面的很多通用算法。 1.2 车牌识别分解 车牌辨认的整个过程可以拆解为以下三个步骤 车牌定位 第一步是从轿车上检测车牌地点方位。本文将运用OpenCV中矩形的边框检测来找到车牌位置。字符切割检测到车牌后使用opencv将其裁剪并保存为新的图片用于后续识别。字符辨认 在新的图片运用光学字符识OCR技术提取图片中的文字、字符、数字。 2 车牌识别的实现 2.1 车牌定位 我国的汽车牌照一般由七个字符和一个点组成车牌字符的高度和宽度是固定的分别为90mm和45mm七个字符之间的距离也是固定的12mm点分割符的直径是10mm字符间的差异可能会引起字符间的距离变化。 在民用车牌中字符的排列位置遵循以下规律 第一个字符通常是我国各省区的简称用汉字表示第二个字符通常是发证机关的代码号最后五个字符由英文字母和数字组合而成字母是二十四个大写字母除去I和O这两个字母的组合数字用-之间的数字表示。 从图像处理角度看汽车牌照有以下几个特征 第一个特征是是车牌的几何特征即车牌形状统一为长宽高固定的矩形第二个特征是车牌的灰度分布呈现出连续的波谷波峰波谷分布这是因为我国车牌颜色单一字符直线排列第三个特征是车牌直方图呈现出双峰状的特点即车牌直方图中可以看到双个波峰第四个特征是车牌具有强边缘信息这是因为车牌的字符相对集中在车牌的中心而车牌边缘无字符因此车牌的边缘信息感较强第五个特征是车牌的字符颜色和车牌背景颜色对比鲜明。目前我国国内的车牌大致可分为蓝底白字和黄底黑字特殊用车采用白底黑字或黑底白字有时辅以红色字体等。 为了简化处理本次学习中只考虑蓝底白字的车牌。 2.1.1 图像加载与灰度化 import cv2img cv2.imread(../data/bmw01.jpg)# 调整图片大小 img cv2.resize(img, (1024, 800))# 灰度图 gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 显示效果 cv2.imshow(gray, gray) cv2.waitKey(0) cv2.destroyAllWindows() 显示结果如下 2.1.2 双边滤波去除噪声 # 双边滤波 blf cv2.bilateralFilter(gray, 13, 15, 15) show_image(bilateralFilter, blf) 显示结果如下 2.1.3 边缘检测 # 边缘检测 edged cv2.Canny(blf, 30, 200) show_image(canny, edged) 显示结果如下 2.1.4 寻找车牌轮廓四边形 cv2.findContours说明 opencv3.x image, contours, hierarchy cv.findContours(image, mode, method[, contours[, hierarchy[, offset]]]) opencv2.x和4.x contours, hierarchy cv.findContours(image, mode, method[, contours[, hierarchy[, offset]]]) OpenCV中HSV空间颜色对照表 提取图像区域的颜色 def reg_area_color(image):找到原图像最多的颜色当该颜色为红色或蓝色时返回该颜色的名称kernel np.ones((35, 35), np.uint8)hsv cv2.cvtColor(image, cv2.COLOR_BGR2HSV)# 以上为图像处理Open cv2.morphologyEx(hsv, cv2.MORPH_OPEN, kernel)# 对Open图像的H通道进行直方图统计hist cv2.calcHist([Open], [0], None, [180], [0, 180])# 找到直方图hist中列方向最大的点hist_maxhist_max np.where(hist np.max(hist))# hist_max[0]为hist_max的行方向的值即H的值H在0~10为红色if 0 hist_max[0] 10:res_color redelif 100 hist_max[0] 124: # H在100~124为蓝色res_color blueelse:# H不在前两者之间跳出函数res_color unknowreturn res_color 寻找车牌轮廓 # 寻找轮廓图像矩阵输出模式近似方法 contours, _ cv2.findContours(edged.copy(), cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) # 根据区域大小排序取前十 contours sorted(contours, keycv2.contourArea, reverseTrue)[:10] screenCnt None # 遍历轮廓找到车牌轮廓 for c in contours:if cv2.contourArea(c) 1024 * 768 * 0.05:continue# 计算轮廓周长轮廓是否闭合peri cv2.arcLength(c, True)# 折线化轮廓阈值越小越接近曲线是否闭合返回折线顶点坐标approx cv2.approxPolyDP(c, 0.018 * peri, True)# 获取四个顶点即四边形, 左下/右下/右上/左上if len(approx) 4:# [参数]左上角纵坐标:左下角纵坐标,左上角横坐标:右上角横坐标crop_image img[approx[3][0][1]:approx[0][0][1], approx[3][0][0]:approx[2][0][0]]show_image(crop, crop_image)if blue reg_area_color(crop_image):screenCnt approxbreak # 如果找到了四边形 if screenCnt is not None:# 根据四个顶点坐标对img画线(图像矩阵轮廓坐标集轮廓索引颜色线条粗细)cv2.drawContours(img, [screenCnt], -1, (0, 0, 255), 3)show_image(contour, img) 运行结果显示 2.1.5 图像位运算进行遮罩 遮罩 # 创建一个灰度图一样大小的图像矩阵 mask np.zeros(gray.shape, np.uint8) # 将创建的图像矩阵的车牌区域画成白色 cv2.drawContours(mask, [screenCnt], 0, 255, -1, ) # 图像位运算进行遮罩 mask_image cv2.bitwise_and(img, img, maskmask) show_image(mask_image, mask_image) 运行结果显示 2.1.6 图像剪裁 图像剪裁 # 获取车牌区域的所有坐标点 (x, y) np.where(mask 255) # 获取底部顶点坐标 (topx, topy) (np.min(x), np.min(y)) # 获取底部坐标 (bottomx, bottomy,) (np.max(x), np.max(y)) # 剪裁 Cropped gray[topx:bottomx, topy:bottomy] 运行结果显示 2.1.7 OCR字符识别 paddleocr是一款轻量型字符识别工具库,支持多语言识别,支持pip安装与自定义训练。 conda下工具类安装 pip install paddleocr -i https://mirror.baidu.com/pypi/simple pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple 代码实现 OCR识别# 使用CPU预加载不用GPU ocr PaddleOCR(use_angle_clsTrue, use_gpuFalse, ocr_versionPP-OCRv3) text ocr.ocr(cropped, clsTrue) for t in text:print(t[0][1]) 运行结果显示如下 [2023/11/15 20:57:43] ppocr DEBUG: dt_boxes num : 1, elapsed : 0.016942501068115234 [2023/11/15 20:57:43] ppocr DEBUG: cls num : 1, elapsed : 0.013955354690551758 [2023/11/15 20:57:43] ppocr DEBUG: rec_res num : 1, elapsed : 0.12021970748901367 (苏A·0MR20, 0.8559348583221436) 2.2 完整代码实现 import cv2 import numpy as np from paddleocr import PaddleOCRdef show_image(desc, image):cv2.imshow(desc, image)cv2.waitKey(0)cv2.destroyAllWindows()def reg_area_color(image):找到原图像最多的颜色当该颜色为红色或蓝色时返回该颜色的名称kernel np.ones((35, 35), np.uint8)hsv cv2.cvtColor(image, cv2.COLOR_BGR2HSV)# 以上为图像处理Open cv2.morphologyEx(hsv, cv2.MORPH_OPEN, kernel)# 对Open图像的H通道进行直方图统计hist cv2.calcHist([Open], [0], None, [180], [0, 180])# 找到直方图hist中列方向最大的点hist_maxhist_max np.where(hist np.max(hist))# hist_max[0]为hist_max的行方向的值即H的值H在0~10为红色if 0 hist_max[0] 10:res_color redelif 100 hist_max[0] 124: # H在100~124为蓝色res_color blueelse:# H不在前两者之间跳出函数res_color unknowreturn res_colorimg cv2.imread(../data/bmw01.jpg)# 调整图片大小 img cv2.resize(img, (1024, 768))# 灰度图 gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) show_image(gray, gray)# 双边滤波 blf cv2.bilateralFilter(gray, 13, 15, 15) show_image(bilateralFilter, blf)# 边缘检测 edged cv2.Canny(blf, 30, 200) show_image(canny, edged)# 寻找轮廓图像矩阵输出模式近似方法 contours, _ cv2.findContours(edged.copy(), cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) # 根据区域大小排序取前十 contours sorted(contours, keycv2.contourArea, reverseTrue)[:10] screenCnt None # 遍历轮廓找到车牌轮廓 for c in contours:if cv2.contourArea(c) 1024 * 768 * 0.05:continue# 计算轮廓周长轮廓是否闭合peri cv2.arcLength(c, True)# 折线化轮廓阈值越小越接近曲线是否闭合返回折线顶点坐标approx cv2.approxPolyDP(c, 0.018 * peri, True)# 获取四个顶点即四边形, 左下/右下/右上/左上if len(approx) 4:# [参数]左上角纵坐标:左下角纵坐标,左上角横坐标:右上角横坐标crop_image img[approx[3][0][1]:approx[0][0][1], approx[3][0][0]:approx[2][0][0]]show_image(crop, crop_image)if blue reg_area_color(crop_image):screenCnt approxbreak # 如果找到了四边形 if screenCnt is not None:# 根据四个顶点坐标对img画线(图像矩阵轮廓坐标集轮廓索引颜色线条粗细)cv2.drawContours(img, [screenCnt], -1, (0, 0, 255), 3)show_image(contour, img)遮罩 # 创建一个灰度图一样大小的图像矩阵 mask np.zeros(gray.shape, np.uint8) # 将创建的图像矩阵的车牌区域画成白色 cv2.drawContours(mask, [screenCnt], 0, 255, -1, ) # 图像位运算进行遮罩 mask_image cv2.bitwise_and(img, img, maskmask) show_image(mask_image, mask_image)图像剪裁 # 获取车牌区域的所有坐标点 (x, y) np.where(mask 255) # 获取底部顶点坐标 (topx, topy) (np.min(x), np.min(y)) # 获取底部坐标 (bottomx, bottomy,) (np.max(x), np.max(y)) # 剪裁 cropped gray[topx:bottomx, topy:bottomy] show_image(cropped, cropped)OCR识别 # 使用CPU预加载不用GPU ocr PaddleOCR(use_angle_clsTrue, use_gpuFalse, ocr_versionPP-OCRv3) text ocr.ocr(cropped, clsTrue) for t in text:print(t[0][1])
http://www.w-s-a.com/news/654396/

相关文章:

  • 网站积分的作用保定专业网站建设
  • 莆田做网站公司电话如何提升网站访问速度
  • 网站开发流程步骤 口袋网页访问wordpress
  • 湘潭做网站的公司自助建站教程
  • 做网站推广和头条推广wordpress 验证密码错误
  • 淘宝联盟网站怎么做深圳市创想三维科技有限公司
  • 校园网站建设招标公告php网站开发什么
  • 06628 网页制作与网站开发陕西省交通建设网站
  • 做wish如何利用数据网站暗红色网站
  • 企业 网站备案 法人长春建站模板搭建
  • 网站做快照网站改版 升级的目的
  • 自己做一个网站要多少钱海外推广什么意思
  • 郑州做网站哪家专业网络基础知识大全
  • 济南制作网站企业php 调试网站
  • 互联网站管理工作细则做网站通栏模糊
  • 徐州手机网站开发公司电话青岛有名的互联网公司
  • 如何在手机做网站wordpress 网站搬迁
  • 网站透明导航代码国外卖货平台有哪些
  • 张家界网站建设方案中国网页设计师
  • 淮南网站建设服务东莞营销型手机网站建设
  • 常德做网站专业公司河南高端网站建设
  • 网站服务器建设的三种方法会展设计ppt
  • 如何把自己做的网站放到内网seo优化网络
  • 北京网站建设net2006厦门优化公司
  • 制作网页前为什么要建立站点菏泽百度网站建设
  • 做影视网站引流网页美工设计课程教案
  • 响应式网站开发流程图网站优化seo教程
  • 做汽车团购网站百度官网平台
  • 网站增加关键字建设旅游网站的功能定位
  • 怎么搭建源码网站义乌网络