Python Opencv实践 - 凸包检测(ConvexHull)

复制代码
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt

img = cv.imread("../SampleImages/stars.png")
plt.imshow(img[:,:,::-1])

img_contour = img.copy()
#得到灰度图做Canny边缘检测
img_gray = cv.cvtColor(img_contour, cv.COLOR_BGR2GRAY)
edges = cv.Canny(img_gray, 120, 255, 0)
#提取并绘制轮廓
contours,hierarchy = cv.findContours(edges, cv.RETR_TREE, cv.CHAIN_APPROX_NONE)
img_contour = cv.drawContours(img_contour, contours, -1, (0,255,0), 2)
plt.imshow(img_contour, cmap=plt.cm.gray)

#凸包检测
#hull = cv.convexHull(points, clockwise, returnpoints)
#hull: 输出凸包结果,n*1*2数据结构,n为外包围圈的点的个数
#points: 输入的坐标点,通常为1* n * 2 结构,n为所有的坐标点的数目
#clockwise:转动方向,TRUE为顺时针,否则为逆时针;
#returnPoints:默认为TRUE,返回凸包上点的坐标,如果设置为FALSE,会返回与凸包点对应的轮廓上的点。
#参考资料:https://blog.csdn.net/lovetaozibaby/article/details/103214672
hulls = []
for contour in contours:
    hull = cv.convexHull(contour)
    hulls.append(hull)
img_convex_hull = cv.drawContours(img, hulls, -1, (0,255,0), 2)

plt.imshow(img_convex_hull[:,:,::-1])
相关推荐
华研前沿标杆游学2 分钟前
企业标杆游学|走进东莞OPPO总部✨探秘智造与品牌出海
python
@陈小鱼2 分钟前
基于CNN-Transformer的无袖带血压估计
人工智能·深度学习·神经网络·算法·cnn·transformer·血压
大侠归来8 分钟前
C语言内存管理:从栈到堆的完整指南
c语言·开发语言·python
wh_xia_jun10 分钟前
AIoT 视觉接入 HA 完整备忘
计算机视觉
cu14311 分钟前
细谈GM7123C的具体功能与其应用
c语言·c++·人工智能·嵌入式硬件
W***259213 分钟前
Work Agent长程任务深度解读:AI自主执行复杂工作的底层机制
大数据·人工智能
金科AI评测笔记16 分钟前
App竞品数据平台信息整理
大数据·人工智能
Margrop18 分钟前
Ubuntu 22.04 硬升 26.04 实录:6KB/s 的下载、缩水的镜像,和一块“暂停营业”的牌子
人工智能
pride.li20 分钟前
ISP标定-BLC标定(Black Level Calibration,黑电平校准)
人工智能·计算机视觉·接口隔离原则
isyoungboy22 分钟前
浓淡补正(阴影校正/光照不均匀校正)算法综述:从原理到工程实现
计算机视觉