轮廓的凸包

简介: 【6月更文挑战第11天】轮廓的凸包。

轮廓的凸包
cv2.convexHull()函数用于返回轮廓的凸包,其基本格式如下。
hull=cv2.convexHull(contour[,clockwise[,returnPoints]])
参数说明如下。
hull为返回的凸包,是一个numpy.ndarray对象,包含了凸包的关键点。
contour为轮廓。
clockwise为方向标记,为True时,凸包为顺时针方向;为False(默认值)时,凸包为逆时针方向。
returnPoints为True(默认值)时,返回的hull中包含的是凸包关键点的坐标;为False时,返回的是凸包关键点在轮廓中的索引。
示例代码如下。

轮廓的凸包

import cv2
import numpy as np
img=cv2.imread('shape3.jpg') #读取图像
cv2.imshow('original',img) #显示原图像
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) #将其转换为灰度图像
ret,img2=cv2.threshold(gray,125,255,cv2.THRESH_BINARY) #二值化阈值处理
c,h=cv2.findContours(img2,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE) #计算轮廓
img3=np.zeros(img.shape, np.uint8)+255 #按原图大小创建一幅白色图像
img3=cv2.drawContours(img3,c,-1,(0,0,255),2) #绘制轮廓
hull = cv2.convexHull(c[0]) #计算凸包
print('returnPoints=True时返回的凸包:\n ',hull)
hull2 = cv2.convexHull(c[0],returnPoints=False)
print('returnPoints=False时返回的凸包:\n ',hull2)
cv2.polylines(img3,[hull],True,(255,0,0),2) #绘制凸包
cv2.imshow('Convex Hull',img3) #显示轮廓图像
cv2.waitKey(0) #按任意键结束等待
cv2.destroyAllWindows() #关闭所有窗口

相关文章
|
6月前
|
计算机视觉 Python
透视变换
【5月更文挑战第15天】透视变换。
41 1
|
5月前
|
Python
轮廓的矩
【6月更文挑战第25天】轮廓的矩。
34 1
|
5月前
|
SDN Python
轮廓的近似多边形
【6月更文挑战第11天】轮廓的近似多边形。
40 4
|
5月前
|
Python
轮廓面积
【6月更文挑战第11天】轮廓面积。
33 3
|
6月前
|
存储 算法
轮廓发现
轮廓发现
39 5
|
Python
Voronoi多边形和Delaunay三角剖分
Voronoi多边形和Delaunay三角剖分
101 0
|
6月前
|
算法
[Halcon&拟合] 直线、矩形和圆的边缘提取
[Halcon&拟合] 直线、矩形和圆的边缘提取
382 0
|
存储 API 图形学
OpenCV_11 轮廓检测:图像的轮廓+绘制轮廓+轮廓近似+边界矩形+椭圆拟合+直线拟合
轮廓检测指检测图像中的对象边界,更偏向于关注上层语义对象。如OpenCV中的findContours()函数, 它会得到每一个轮廓并以点向量方式存储,除此也得到一个图像的拓扑信息,即一个轮廓的后一个轮廓、前一个轮廓等的索引编号。
1605 0
|
编解码 算法 计算机视觉
Canny算子与霍夫变换检测圆与直线
Canny算子与霍夫变换检测圆与直线
375 0
Canny算子与霍夫变换检测圆与直线
|
C++
202104-1 灰度直方图
202104-1 灰度直方图
54 0
 202104-1 灰度直方图