目录

OpenCV-Python 获取近似轮廓

根据上一篇文章,我们简单的获取了轮廓的所有坐标点,实际上也许我们只需要局部的几个坐标点即可,如下图所示:

原图
以数值0.1精度取得 4 个点
以 0.01 精度取得多个点
直接注释代码,获得所有点

代码如下所示:

import numpy as np
import cv2 as cv

# 读取图片
im = cv.imread('test_img.png')
imgray = cv.cvtColor(im,cv.COLOR_BGR2GRAY)

# 获取轮廓
ret, thresh = cv.threshold(imgray,127,255,0)
contours, hierarchy = cv.findContours(thresh, cv.RETR_TREE,cv.CHAIN_APPROX_SIMPLE)

# 注释以下代码,或 调整数值 “0.1” 以获得不同的精度
epsilon = 0.01*cv.arcLength(contours[0],True)
contours = cv.approxPolyDP(contours[0],epsilon,True)


# 展示
cv.drawContours(im,contours, -1,(0,255,0),3)
cv.imshow('result',im)
cv.waitKey(0)

# 释放资源
cv.destroyAllWindows()

示例代码打包下载:

参考原文:https://docs.opencv.org/4.5.5/dd/d49/tutorial_py_contour_features.html


上一篇:«

下一篇: »


评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

*