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

网站开发项目视频phpcms v9 网站模板

网站开发项目视频,phpcms v9 网站模板,wordpress主题转hexo,网站建设免费软件前言#xff1a;Hello大家好#xff0c;我是小哥谈。图形检测是计算机视觉的一项重要功能。通过图形检测可以分析图像中可能存在的形状#xff0c;然后对这些形状进行描绘#xff0c;例如搜索并绘制图像的边缘#xff0c;定位图像的位置#xff0c;判断图像中有没有直线、… 前言Hello大家好我是小哥谈。图形检测是计算机视觉的一项重要功能。通过图形检测可以分析图像中可能存在的形状然后对这些形状进行描绘例如搜索并绘制图像的边缘定位图像的位置判断图像中有没有直线、有没有圆形等。虽然图形检测涉及非常深奥的数学算法但是OpenCV已经将这些算法封装成了简单的方法开发者只要学会如何调用方法、如何调整参数即可很好的实现检测功能。本节课就介绍如何检测图像的形状、图像所占的区域以及如何查找图像中出现的几何图形等。 前期回顾 史上最全OpenCV常用方法及使用说明汇总建议收藏 OpenCV基础知识1— OpenCV概述 OpenCV基础知识2— 图像处理的基本操作 OpenCV基础知识3— 图像数字化基础像素、色彩空间 OpenCV基础知识4— 绘制图形 OpenCV基础知识5— 几何变换 OpenCV基础知识6— 滤波器 OpenCV基础知识7— 腐蚀与膨胀 目录 1.图像的轮廓  2.轮廓的拟合 2.1 矩形包围框 2.2 圆形包围框 3.Canny边缘检测 4.霍夫变换 4.1 直线检测 4.2 圆环检测 5.总结 1.图像的轮廓  轮廓是指图像中图形或物体的外边缘线条。简单的几何图形轮廓是由平滑的线构成的容易识别但不规则的轮廓可能有许多个点构成识别起来比较困难。 OpenCV提供的findContours()方法可以通过计算图像梯度来判断出图像的边缘然后将边缘的点封装成数组返回。 findContours()方法的语法格式如下 contours,hierarchy cv2.findContours(image,mode,method) 参数说明 image被检测的图像必须是8位单通道二值图像。如果原始图像是彩色图像必须转为灰度图像并经过二值化阈值处理。 mode轮廓的检索模式具体值详见表。 参数值含义cv2.RETR_EXTERNAL只检测外轮廓CV2.RETR_LIST检测所有轮廓但不建立层次关系。CV2.RETR_CCOMP检测所有轮廓并建立两级层次关系。CV2.RETR_TREE检测所有轮廓并建立树状结构的层次关系。 method检测轮廓时使用的方法具体值详见表。 参数值含义cv2.CHAIN_APPROX_NONE储存轮廓上的所有点cv2.CHAIN_APPROX_SIMPLE只保存水平、垂直或对角线轮廓的端点CV2.CHAIN_APPROX_TC89_L1Ten-Chin1近似算法的一种CV2.CHAIN_APPROX_TC89_KCOSTen-Chin1近似算法的一种 返回值说明 contours检测出的所有轮廓list类型每一个元素都是某个轮廓的像素坐标数组。 hierarchy轮廓之间测层次关系。 通过findContours()方法找到图像轮廓之后为了方便开发人员观测最好能把轮廓画出来于是OpenCV方法提供了drawContours()方法专门用来绘制这些轮廓。 drawContours()方法的语法如下 image cv2.drawContours(image,contours,contourIdx,color,thickness,lineType,hierarchy,maxLevel,offse) 参数说明 image被绘制轮廓的原始图像可以是多通道图像。 contoursfindContours()方法得出的轮廓列表。 contourIdx绘制轮廓的索引如果为-1则绘制所有轮廓。 color绘制颜色使用RGB格式。 thickness可选参数画笔的粗细程度如果该值为-1则绘制实心轮廓。 lineType可选参数绘制轮廓的线型。 hierarchy可选参数findContours()方法得出的层次关系。 maxLevel可选参数绘制轮廓的层次深度最深绘制第maxLevel层。 offse可选参数偏移量可以改变绘制结果的位置。 返回值说明 image同参数中的image方法执行后原始图像中就包含绘制的轮廓了可以不使用此返回值保存结果。 案例1 绘制几何图像的轮廓具体代码如下 import cv2 img cv2.imread(shape1.png) # 读取原图 gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 彩色图像转为变成单通道灰度图像 t, binary cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY) # 灰度图像转为二值图像 # 检测图像中出现的所有轮廓记录轮廓的每一个点 contours, hierarchy cv2.findContours(binary, cv2.RETR_LIST, cv2.CHAIN_APPROX_NONE) # 绘制所有轮廓宽度为5颜色为红色 cv2.drawContours(img, contours, -1, (0, 0, 255), 5) cv2.imshow(img, img) # 显示绘制结果 cv2.waitKey() # 按下任何键盘按键后 cv2.destroyAllWindows() # 释放所有窗体 运行效果如图所示 案例2 绘制花朵的轮廓。 绘制之前首先要降低图像中的噪声干扰先进行滤波处理再将图像处理成二值灰度图像并检测出轮廓再利用绘制轮廓的方法在原始图像中绘制轮廓。 具体代码如下 import cv2 img cv2.imread(flower.jpg) # 读取原图 cv2.imshow(img, img) # 显示原图 img cv2.medianBlur(img, 5) # 使用中值滤波去除噪点 gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 原图从彩图变成单通道灰度图像 t, binary cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY) # 灰度图像转化为二值图像 cv2.imshow(binary, binary) # 显示二值化图像 # 获取二值化图像中的轮廓极轮廓层次数据 contours, hierarchy cv2.findContours(binary, cv2.RETR_LIST, cv2.CHAIN_APPROX_NONE) cv2.drawContours(img, contours, -1, (0, 0, 255), 2) # 在原图中绘制轮廓 cv2.imshow(contours, img) # 显示绘有轮廓的图像 cv2.waitKey() # 按下任何键盘按键后 cv2.destroyAllWindows() # 释放所有窗体 运行效果如图所示 2.轮廓的拟合 拟合是指将平面上的一系列点用一条光滑的曲线连接起来。轮廓的拟合就是将凹凸不平的轮廓用平整的几何图形体现出来。 下面就为大家介绍如何按照轮廓绘制矩形包围框和圆形包围框。 2.1 矩形包围框 矩形包围框是指图像轮廓的最小矩形边界。OpenCV提供的boundingRect()方法可以自动计算出轮廓最小矩形边界的坐标和宽高。 boundingRect()方法的语法如下 retval cv2.boundingRect(array) 参数说明 array轮廓数组 返回值说明 retval元组类型包含四个整数值分别是最小矩形包围框左上角顶点的横坐标、左上角顶点的纵坐标、矩形的宽和矩形的高。所以也可以写成x,y,w,h cv2.boundingRect(array)的形式。 案例 为爆炸图形绘制矩形包围框。具体代码如下 import cv2 img cv2.imread(shape2.png) # 读取原图 gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 从彩色图像变成单通道灰度图像 # 将灰度图像进行二值化阈值处理 t, binary cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY) # 获取二值化图像中的轮廓极轮廓层次数据 contours, hierarchy cv2.findContours(binary, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE) x, y, w, h cv2.boundingRect(contours[0]) # 获取第一个轮廓的最小矩形边框记录坐标和宽高 cv2.rectangle(img, (x, y), (x w, y h), (0, 0, 255), 2) # 绘制红色矩形 cv2.imshow(img, img) # 显示绘制结果 cv2.waitKey() # 按下任何键盘按键后 cv2.destroyAllWindows() # 释放所有窗体 运行效果如图所示 2.2 圆形包围框 圆形包围框与矩形包围框同理是图像轮廓的最小圆形边界。OpenCV提供的minEnclosingCircle()方法可以自动计算出轮廓最小圆形边界的圆心和半径。 minEnclosingCircle()方法的语法格式如下 center,radius cv2.minEnclosingCircle(points) 参数说明 points轮廓数组 返回值说明 center元组类型包含两个浮点值是最小圆形包围框圆心的横坐标和纵坐标。 radius浮点类型最小圆形包围框的半径。 案例 为爆炸图形绘制圆形包围框。具体代码如下 import cv2 img cv2.imread(shape2.png) # 读取原图 gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 从彩色图像变成单通道灰度图像 # 将灰度图像进行二值化阈值处理 t, binary cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY) # 获取二值化图像中的轮廓极轮廓层次数据 contours, hierarchy cv2.findContours(binary, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE) center, radius cv2.minEnclosingCircle(contours[0]) # 获取最小圆形边框的圆心点和半径 x int(round(center[0])) # 圆心点横坐标转为近似整数 y int(round(center[1])) # 圆心点纵坐标转为近似整数 cv2.circle(img, (x, y), int(radius), (0, 0, 255), 2) # 绘制圆形 cv2.imshow(img, img) # 显示绘制结果 cv2.waitKey() # 按下任何键盘按键后 cv2.destroyAllWindows() # 释放所有窗体 运行效果如图所示 3.Canny边缘检测 Canny边缘检测算法是John F.Canny 于1986年开发出来的一个多级边缘检测算法该算法根据像素的梯度变化寻找图像边缘最终可以绘制出十分精细的二值边缘图像。 OpenCV将Canny边缘检测算法封装在Canny()方法中该方法的语法如下 edgrs cv2.Canny(image,threshold1,threshold2,apertureSize,L2gradient) 参数说明 image检测的原始图像 threshold1计算过程中使用的第一个阈值可以是最小阈值也可以是最大阈值通常用来设置最小阈值。 threshold2计算过程中使用的第二个阈值通常用来设置最大阈值。 apertureSize可选参数Sobel算子的孔径大小。 L2gradient可选参数计算图像梯度的标识默认值为False。值为True时会采用更精准的算法进行计算。 返回值说明 edges计算后得出的边缘图像是一个二值灰度图像。 说明♨️♨️♨️ 在开发过程中可以通过调整最小阈值和最大阈值来控制边缘检测的精细程度。当两个阈值都较小的时候会检测出更多的细节当两个阈值都较大的时候会忽略较多的细节。 案例 使用Canny算法检测美女图像具体代码如下 import cv2 img cv2.imread(1.webp) # 读取原图 r1 cv2.Canny(img, 10, 50); # 使用不同的阈值进行边缘检测cv2.imshow(img, img) # 显示原图 cv2.imshow(r1, r1) # 显示边缘检测结果 cv2.waitKey() # 按下任何键盘按键后 cv2.destroyAllWindows() # 释放所有窗体运行效果如图所示 4.霍夫变换 霍夫变换是一种特征检测通过算法识别图像的特征从而判断出图像中的特殊形状例如直线和圆。下面就为大家介绍如何检测图像中的直线和圆。 4.1 直线检测 霍夫直线变换是通过霍夫坐标系的直线与笛卡尔坐标系的点之间的映射关系来判断图像中的点是否构成直线。OpenCV将此封装成了两个方法分别是cv2.HoughLines()方法和 cv2.HoughLinesP()方法前者用于检测无线延长的直线后者用于检测线段。 本节就介绍比较常用的HoughLinesP()方法。 HoughLinesP()方法名称最后有一个大写的P该方法只能检测二值灰度图像也就是只有两种像素值的黑白图像。方法最后会把找出的所有线段的两个端点坐标保存成一个数组。 HoughLinesP()方法的语法如下 lines cv2.HoughLinesP(image,rho,theta,threshold,minLineLength,maxLineGap) 参数说明 image检测的原始图像 rho检测直线使用的半径步长值为1时表示检测所有可能的半径步长。 theta搜索直线的角度值为π/180时表示检测的所有角度。 threshold阈值该值越小检测的直线就越多。 minLineLength线段的最小长度小于该长度的直线不会记录到结果中。 maxLineGap线段之间的最小距离。 返回值说明 lines一个数组元素为所有检测出的线段每个线段也是一个数组内容为线段两个端点的横纵坐标格式为[[[x1,y1,x2,y2],[x1,y1,x2,y2]]]。 说明♨️​​​​​​​♨️​​​​​​​♨️ 使用该方法前需要先为原始图像进行降噪处理否则会影响检测结果。 案例 检测笔图像中出现的直线具体代码如下 import cv2 import numpy as npimg cv2.imread(pen.jpg) # 读取原图 o img.copy() # 复制原图 o cv2.medianBlur(o, 5) # 使用中值滤波进行降噪 gray cv2.cvtColor(o, cv2.COLOR_BGR2GRAY) # 从彩色图像变成单通道灰度图像 binary cv2.Canny(o, 50, 150) # 绘制边缘图像 # 检测直线精度为1全角度阈值为15线段最短100最小间隔为18 lines cv2.HoughLinesP(binary, 1, np.pi / 180, 15, minLineLength100, maxLineGap18) for line in lines: # 遍历所有直线x1, y1, x2, y2 line[0] # 读取直线两个端点的坐标cv2.line(img, (x1, y1), (x2, y2), (0, 0, 255), 2) # 在原始图像上绘制直线 cv2.imshow(canny, binary) # 显示二值化边缘图案 cv2.imshow(img, img) # 显示绘制结果 cv2.waitKey() # 按下任何键盘按键后 cv2.destroyAllWindows() # 释放所有窗体 运行效果如图所示 4.2 圆环检测 霍夫圆环变换的原理与霍夫直线变换类似。OpenCV提供的HoughCircle()方法用于检测图像中的圆该方法在检测过程中进行两轮筛选第一轮筛选会找出可能的是圆的圆心坐标第二轮筛选会计算出这些圆心坐标可能的对应的半径长度。方法最后会将圆心坐标和半径长度封装成一个浮点型数组。 HoughCircle()方法的语法格式如下 circles cv2.HoughCircle(image,method,dp,minDist,param1,param2,minRadius,maxRadius) 参数说明 image检测的原始图像 method检测方法 dp累加器分辨率与原始图像分辨率之比的倒数。值为1时累加器与原始图像具有相同的分辨率值为2时累加器的分辨率为原始图像的1/2。通常使用1作为参数。 minDist圆心之间的最小距离 param1可选参数Canny边缘检测使用的最大阈值。 param2可选参数检测圆环结果的投票数。第一轮筛选时投票数超过该值的圆才会进入第二轮筛选。值越大检测出的圆越小但越精准。 minRadius可选参数圆的最小半径。 maxRadius可选参数圆的最大半径。 返回值说明 circles一个数组元素为所有检测出的圆每个圆也是一个数组内容为圆心的横、纵坐标和半径长度格式为[[[x1,y1,r1],[x2,y2,r2]]]。 说明♨️​​​​​​​♨️​​​​​​​♨️ 使用该方法前需要先为原始图像进行降噪处理否则会影响检测结果。 案例 绘制硬币图像的圆环和对应圆心具体代码如下 import cv2 import numpy as npimg cv2.imread(coin.jpg) # 读取原图 o img.copy() # 复制原图 o cv2.medianBlur(o, 5) # 使用中值滤波进行降噪 gray cv2.cvtColor(o, cv2.COLOR_BGR2GRAY) # 从彩色图像变成单通道灰度图像 # 检测圆环圆心最小间距为70Canny最大阈值为100投票数超过25。最小半径为10最大半径为50 circles cv2.HoughCircles(gray, cv2.HOUGH_GRADIENT, 1, 70, param1100, param225, minRadius10, maxRadius50) circles np.uint(np.around(circles)) # 将数组元素四舍五入成整数 for c in circles[0]: # 遍历圆环结果x, y, r c # 圆心横坐标、纵坐标和圆半径cv2.circle(img, (x, y), r, (0, 0, 255), 3) # 绘制圆环cv2.circle(img, (x, y), 2, (0, 0, 255), 3) # 绘制圆心 cv2.imshow(img, img) # 显示绘制结果 cv2.waitKey() # 按下任何键盘按键后 cv2.destroyAllWindows() # 释放所有窗体 运行效果如图所示 5.总结 总结 1图像的轮廓先对图像做二值化处理cv2.findContours()检测轮廓cv2.drawContours()绘制轮廓。 2轮廓的拟合包括矩形包围框和圆形包围框。 3Canny边缘检测最实用、最简单、效果最好的边缘检测方法。阈值越小边缘越多。 4霍夫变换包括直线检测和圆环检测。其中直线检测是检测之前先降噪再做二值化阈值处理圆环检测是检测之前先降噪再转为单通道灰度图像。
http://www.zqtcl.cn/news/115226/

相关文章:

  • 网站布局设计软件太原专业做网站
  • 织梦教育培训网站源码素材图下载
  • 内容网站外贸网站外贸网站建设行吗
  • 什么是网络营销定义北京网站关键词优化
  • 开奖视频网站开发成都优化官网公司
  • 网站开发培训学校互联网软件外包平台
  • 房屋网签查询系统官方网站建设网站总经理讲话范本
  • 创建网站好的平台罗湖网站建设优化
  • 青海兴远建设工程有限公司网站wordpress怎么设计网站
  • 泉州建站公司模板马云谈2025的房价
  • 动漫制作专业什么电脑最适合沈阳关键词优化报价
  • seo企业网站源码虚拟主机如何建设多个网站
  • 电商 网站模板借钱软件推广微信hyhyk1
  • 免费网站模板psd建网站程序工具
  • 企业建设网站专业服务网站设置文件夹权限
  • 用ip做网站威海市城乡建设局网站
  • 网页网站开发设计工作前景做网站 兼职
  • c 网站开发类似优酷乐山旅游英文网站建设
  • 网站空间租用哪家好小程序免费制作平台企业中心
  • 个人网站可以做哪些主题网站别人做的收到方正侵权
  • 网站seo最新优化方法网络营销做的好的企业
  • 做网站如何防止被坑做的网站第二年续费多钱
  • 做网站注意哪些方面聊城住房建设局网站
  • ftp wordpress 搬站太仓做网站公司
  • php美食网站开发背景天津微外卖网站建设
  • 如何建造企业网站北京金山办公软件公司
  • dedecms织梦搬家公司网站模板贵阳国家经济技术开发区门户网站
  • 网站架构设计师网络工程师的就业前景
  • 网站建设所需人员世界各国o2o响应式网站
  • 成都网站设计最加科技企业宣传片观后感