php的网站模板下载livezilla wordpress
- 作者: 多梦笔记
- 时间: 2026年02月17日 11:32
当前位置: 首页 > news >正文
php的网站模板下载,livezilla wordpress,营销网站售后调查,该网站正在建设中 马上就来文章目录 7. 图像轮廓7.1 什么是图像轮廓7.2 查找轮廓7.3 绘制轮廓7.4 轮廓的面积和周长7.5 多边形逼近与凸包7.6 外接矩形 OpenCV官网 7. 图像轮廓
7.1 什么是图像轮廓
图像轮廓是具有相同颜色或灰度的连续点的曲线. 轮廓在形状分析和物体的检测和识别中很有用。
轮廓的作用… 文章目录 7. 图像轮廓7.1 什么是图像轮廓7.2 查找轮廓7.3 绘制轮廓7.4 轮廓的面积和周长7.5 多边形逼近与凸包7.6 外接矩形 OpenCV官网 7. 图像轮廓
7.1 什么是图像轮廓
图像轮廓是具有相同颜色或灰度的连续点的曲线. 轮廓在形状分析和物体的检测和识别中很有用。
轮廓的作用:
用于图形分析物体的识别和检测
注意点:
为了检测的准确性需要先对图像进行二值化或Canny操作。画轮廓时会修改输入的图像, 如果之后想继续使用原始图像应该将原始图像储存到其他变量中。
7.2 查找轮廓 findContours(image, mode, method[, contours[, hierarchy[, offset]]]) mode 查找轮廓的模式 RETR_EXTERNAL 0, 表示只检测外围轮廓 RETR_LIST 1, 检测的轮廓不建立等级关系, 即检测所有轮廓, 较为常用 RETR_CCOMP 2, 每层最多两级, 从小到大, 从里到外. RETR_TREE 3, 按照树型存储轮廓, 从大到小, 从右到左. method 轮廓近似方法也叫ApproximationMode CHAIN_APPROX_NONE 保存所有轮廓上的点CHAIN_APPROX_SIMPLE, 只保存角点, 比如四边形, 只保留四边形的4个角, 存储信息少, 比较常用 返回 contours和hierachy 即轮廓和层级
import cv2
import numpy as np# 该图像显示效果是黑白的, 但是实际上却是3个通道的彩色图像.
img cv2.imread(./contours1.jpeg)# 变成单通道的黑白图片
gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 二值化, 注意有2个返回值, 阈值和结果
ret, binary cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY)# cv2.imshow(img, img)
cv2.imshow(binary, binary)# 轮廓查找, 新版本返回两个结果, 轮廓和层级, 老版本返回3个参数, 图像, 轮廓和层级
result, contours, hierarchy cv2.findContours(binary, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)# 打印轮廓
print(contours)
cv2.waitKey(0)
cv2.destroyAllWindows()
7.3 绘制轮廓
drawContours(image, contours, contourIdx, color[, thickness[, lineType[, hierarchy[, maxLevel[, offset]]]]]) image 要绘制的轮廓图像contours轮廓点contourIdx 要绘制的轮廓的编号. -1 表示绘制所有轮廓color 轮廓的颜色, 如 (0, 0, 255)表示红色thickness线宽, -1 表示全部填充
import cv2
import numpy as np# 该图像显示效果是黑白的, 但是实际上却是3个通道的彩色图像.
img cv2.imread(./contours1.jpeg)# 变成单通道的黑白图片
gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 二值化, 注意有2个返回值, 阈值和结果
ret, binary cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY)# 轮廓查找, 新版本返回两个结果, 轮廓和层级, 老版本返回3个参数, 图像, 轮廓和层级
result, contours, hierarchy cv2.findContours(binary, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)# 绘制轮廓, 注意, 绘制轮廓会改变原图
cv2.drawContours(img, contours, 1, (0, 0, 255), 2)cv2.imshow(img, img)cv2.waitKey(0)
cv2.destroyAllWindows()7.4 轮廓的面积和周长
轮廓面积是指每个轮廓中所有的像素点围成区域的面积单位为像素。
轮廓面积是轮廓重要的统计特性之一通过轮廓面积的大小可以进一步分析每个轮廓隐含的信息例如通过轮廓面积区分物体大小识别不同的物体。
在查找到轮廓后, 可能会有很多细小的轮廓, 我们可以通过轮廓的面积进行过滤.
contourArea(contour)arcLength(curve, closed) curve即轮廓closed是否是闭合的轮廓
import cv2
import numpy as np# 该图像显示效果是黑白的, 但是实际上却是3个通道的彩色图像.
img cv2.imread(./contours1.jpeg)# 变成单通道的黑白图片
gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 二值化, 注意有2个返回值, 阈值和结果
ret, binary cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY)# 轮廓查找, 新版本返回两个结果, 轮廓和层级, 老版本返回3个参数, 图像, 轮廓和层级
result, contours, hierarchy cv2.findContours(binary, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)# 绘制轮廓, 注意, 绘制轮廓会改变原图
cv2.drawContours(img, contours, 1, (0, 0, 255), 2)# 计算面积
area cv2.contourArea(contours[1])
print(area: , area)
cv2.imshow(img, img)# 计算周长
perimeter cv2.arcLength(contours[1], True)
print(perimeter:, perimeter)cv2.waitKey(0)
cv2.destroyAllWindows()7.5 多边形逼近与凸包
findContours后的轮廓信息contours可能过于复杂不平滑可以用approxPolyDP函数对该多边形曲线做适当近似,这就是轮廓的多边形逼近.
apporxPolyDP就是以多边形去逼近轮廓采用的是Douglas-Peucker算法方法名中的DP
DP算法原理比较简单核心就是不断找多边形最远的点加入形成新的多边形直到最短距离小于指定的精度。
approxPolyDP(curve, epsilon, closed[, approxCurve]) curve 要近似逼近的轮廓epsilon 即DP算法使用的阈值closed轮廓是否闭合
import cv2
import numpy as npimg cv2.imread(./hand.png)gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 二值化, 注意有2个返回值, 阈值和结果
ret, binary cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY)# 轮廓查找, 新版本返回两个结果, 轮廓和层级, 老版本返回3个参数, 图像, 轮廓和层级
result, contours, hierarchy cv2.findContours(binary, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)# 绘制轮廓, 注意, 绘制轮廓会改变原图
cv2.drawContours(img, contours, 0, (0, 0, 255), 2)
展示没有进行多边形逼近之前的轮廓# 进行多边形逼近, 返回的是多边形上一系列的点, 即多边形逼近之后的轮廓
approx cv2.approxPolyDP(contours[0], 20, True)
print(type(approx))
print(approx)
print(————————————–)
print(contours[0])# 把多边形逼近的轮廓画出来.
cv2.drawContours(img, [approx], 0, (0, 255, 0), 2)
cv2.imshow(img, img)cv2.waitKey(0)
cv2.destroyAllWindows()逼近多边形是轮廓的高度近似但是有时候我们希望使用一个多边形的凸包来简化它。凸包跟逼近多边形很像只不过它是物体最外层的凸多边形。凸包指的是完全包含原有轮廓并且仅由轮廓上的点所构成的多边形。凸包的每一处都是凸的即在凸包内连接任意两点的直线都在凸包的内部。在凸包内任意连续三个点的内角小于180°。
convexHull(points[, hull[, clockwise[, returnPoints]]]) points 即轮廓colckwise 顺时针绘制
import cv2
import numpy as npimg cv2.imread(./hand.png)gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 二值化, 注意有2个返回值, 阈值和结果
ret, binary cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY)# 轮廓查找, 新版本返回两个结果, 轮廓和层级, 老版本返回3个参数, 图像, 轮廓和层级
result, contours, hierarchy cv2.findContours(binary, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)# 绘制轮廓, 注意, 绘制轮廓会改变原图
cv2.drawContours(img, contours, 0, (0, 0, 255), 2)# 进行多边形逼近, 返回的是多边形上一系列的点, 即多边形逼近之后的轮廓
approx cv2.approxPolyDP(contours[0], 20, True)# 把多边形逼近的轮廓画出来.
cv2.drawContours(img, [approx], 0, (0, 255, 0), 2)# 计算凸包
hull cv2.convexHull(contours[0])
cv2.drawContours(img, [hull], 0, (255, 0, 0), 2)cv2.imshow(img, img)cv2.waitKey(0)
cv2.destroyAllWindows() 7.6 外接矩形
外接矩形分为最小外接矩形和最大外接矩形.
下图中红色矩形是最小外接矩形, 绿色矩形为最大外接矩形. minAreaRect(points) 最小外接矩阵 points 即为轮廓返回元组, 内容是一个旋转矩形(RotatedRect)的参数: 矩形的起始坐标x,y, 矩形的宽度和高度, 矩形的选择角度. boundingRect(points) 最大外接矩阵 points 即为轮廓
import cv2
import numpy as npimg cv2.imread(./hello.jpeg)gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)ret, binary cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY)result, contours, hierarchy cv2.findContours(binary, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)# 最外面的轮廓是整个图像, contours[1]表示图像里面的图形轮廓
注意返回的内容是一个旋转的矩形, 包含矩形的起始坐标, 宽高和选择角度
(x, y), (w, h), angle cv2.minAreaRect(contours[1])print(x, y) print(w, h) print(angle) r cv2.minAreaRect(contours[1])# 快速把rotatedrect转化为轮廓数据 box cv2.boxPoints® print(box)
轮廓必须是整数, 不能是小数, 所以转化为整数
box np.round(box).astype(int64) print(box)
绘制最小外接矩形
cv2.drawContours(img, [box], 0, (255, 0, 0), 2)# 返回矩形的x,y和w,h x,y, w, h cv2.boundingRect(contours[1]) cv2.rectangle(img, (x, y), (x w, y h), (255, 0, 0), 2)cv2.imshow(img, img) cv2.waitKey(0) cv2.destroyAllWindows()
- 上一篇: php带数据库的网站赣州百姓网免费发布信息网
- 下一篇: php的网站模板下载百度收录网站排名
相关文章
-
php带数据库的网站赣州百姓网免费发布信息网
php带数据库的网站赣州百姓网免费发布信息网
- 站长
- 2026年02月17日
-
php代理ip访问网站建设工程教育网站论坛
php代理ip访问网站建设工程教育网站论坛
- 站长
- 2026年02月17日
-
php代理ip访问网站erp系统排行榜
php代理ip访问网站erp系统排行榜
- 站长
- 2026年02月17日
-
php的网站模板下载百度收录网站排名
php的网站模板下载百度收录网站排名
- 站长
- 2026年02月17日
-
php的网站数据库如何上传wordpress+作品展
php的网站数据库如何上传wordpress+作品展
- 站长
- 2026年02月17日
-
php帝国建站系统做网站基本东西
php帝国建站系统做网站基本东西
- 站长
- 2026年02月17日
