2021
08-20
08-20
OpenCV-Python实现凸包的获取
目录前言获取凸包角点凸缺陷简单例子手势图片前言逼近多边形是某个图像轮廓的高度近似,而凸包的提出是为了简化逼近多边形的。其实,凸包跟逼近多边形很像,只不过它是物体最外层的“凸”多边形。简单的概括,凸包是指完全包含原有轮廓,并且仅由轮廓上的点所构成的多边形。凸包的特点是每一处都是凸的,即在凸包内连接任意两点的直线都在凸包的内部,并且任意连续3个点的内角小于180度。在OpenCV中,它给我们提供cv2.convexHull(...
继续阅读 >
一、效果图:在左图的白色区域周围,画任意形状的凸包图。二、代码importcv2importnumpyasnpdefgenerate_poly(image,n,area_thresh):"""随机生成凸包:paramimage:二值图:paramn:顶点个数:paramarea_thresh:删除小于此面积阈值的凸包:return:凸包图"""row,col=np.where(image[:,:,0]==255)#行,列point_set=np.zeros((n,1,2),dtype=int)forjinrange(n):index=np.random.randint(0,le...
一般有两种算法来计算平面上给定n个点的凸包:Graham扫描法(Graham'sscan),时间复杂度为O(nlgn);Jarvis步进法(Jarvismarch),时间复杂度为O(nh),其中h为凸包顶点的个数。这两种算法都按逆时针方向输出凸包顶点。Graham扫描法用一个栈来解决凸包问题,点集Q中每个点都会进栈一次,不符合条件的点会被弹出,算法终止时,栈中的点就是凸包的顶点(逆时针顺序在边界上)。算法步骤如下图:importsysimportmathimporttimeimportr...