Existe uma função semelhante ao OpenCV findContours que detecta curvas e substitui pontos por um spline?
Estou tentando pegar a imagem abaixo, rastrear a forma branca e exportar o caminho resultante para pdf. O problema que tenho é que o findContours parece encontrar apenas pontos ao longo da borda da forma. Existe uma solução lá fora, semelhante ao findContours, que detecta curvas em uma forma e substitui seus pontos por um spline onde quer que haja uma curva? Se eu usar scipy.interpolate, ele ignora as linhas retas e transforma todo o contorno em uma grande forma curva, o que também não é bom. Eu preciso de algo que faça as duas coisas.
import numpy as np
import cv2
from scipy.interpolate import splprep, splev
from pyx import *
import matplotlib.pyplot as plt
#read in image file
original = cv2.imread('test.jpg')
#blur the image to smooth edges
im = cv2.medianBlur(original,5)
#threshold the image
imgray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
ret,thresh = cv2.threshold(imgray,170,255,cv2.THRESH_BINARY)
#findContours
im2, contours, hierarchy = cv2.findContours(thresh,cv2.RETR_EXTERNAL,cv2.CHAIN_\
APPROX_SIMPLE)
#drawContours
cv2.drawContours(original, [approx], -1, (0,255,0), 3)
cv2.imshow("Imageee", original)
cv2.waitKey(0)