opencv-python 轮廓查找 椭圆拟合 画椭圆

直接放图放程序

opencv-python 轮廓查找 椭圆拟合 画椭圆_第1张图片

import cv2 as cv

if __name__ == "__main__":

    im = cv.imread("image/circle_patten.jpg")    # 读图
    imgray = cv.cvtColor(im, cv.COLOR_BGR2GRAY)    # 转灰度图
    _, thresh = cv.threshold(imgray, 130, 255, cv.THRESH_BINARY + cv.THRESH_OTSU)  # 二值化 
    image, contours, hierarchy = cv.findContours(thresh, cv.RETR_TREE, cv.CHAIN_APPROX_SIMPLE)  # 轮廓查找


    retval = cv.fitEllipse(contours[1])  # 取其中一个轮廓拟合椭圆
    img = cv.ellipse(im, retval, (0, 0, 255), thickness=2) # 在原图画椭圆
    cv.imshow("mark_ellipse[1]", img)
    print(retval) # 这里可以查看下fitEllipse的返回值的结构
    cv.waitKey()

 fitEllipse

opencv-python 轮廓查找 椭圆拟合 画椭圆_第2张图片

ellipse

注意到这里的形参box即是 fitEllipse的返回值

其类型为RotatedRect

 opencv-python 轮廓查找 椭圆拟合 画椭圆_第3张图片

RotatedRect

在上面的程序中,print(retval)得到的值为:

((579.71240234375, 449.0208740234375), (49.17593765258789, 49.56596755981445), 96.06968688964844) 

对应下图可知retval[0]为椭圆中心坐标,retval[1]是外接椭圆的矩形的高和宽,retval[2]为旋转角

opencv-python 轮廓查找 椭圆拟合 画椭圆_第4张图片

你可能感兴趣的:(opencv-python)