我想用线段链来近似平滑线。
OpenCV 3.4中的cv2.approxPolyDP在闭合曲线的情况下取得了不错的效果。
但是在开曲线的情况下,cv2.approxPolyDP并没有达到预期的效果。
我想要的结果应该是一条线段链,而不是一个封闭的多边形,像这样(这张图片是由Photoshop而不是Python程序创建的):
有没有办法使用 cv2.approxPolyDP 来近似开放曲线?
我的 Python 程序如下:
import cv2
img = cv2.imread('1.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imshow("gray", gray)
cv2.waitKey(0)
_, binary = cv2.threshold(gray, 10, 255, cv2.THRESH_BINARY)
# cv2.imshow("binary", binary)
# cv2.waitKey(0)
_, contours, _ = cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
for contour in contours:
epsilon = 0.009 * cv2.arcLength(contour, True)
approx = cv2.approxPolyDP(contour, epsilon, closed=True)
cv2.drawContours(img, [approx], -1, (0, 255, 255), 1)
cv2.imshow("approx", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
我的程序中使用的原始照片如下。