小编sta*_*ter的帖子

是否有类似于 OpenCV findContours 的函数来检测曲线并用样条替换点?

我正在尝试拍摄下面的图像,跟踪白色形状,并将生成的路径导出为 pdf。我遇到的问题是 findContours 似乎只能找到沿形状边缘的点。是否有类似于 findContours 的解决方案,可以检测形状中的曲线并在有曲线的地方用样条替换其点?如果我使用 scipy.interpolate 它会忽略直线并将整个轮廓变成一个大的弯曲形状,这也不好。我需要可以同时做两件事的东西。

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)
Run Code Online (Sandbox Code Playgroud)

python opencv matplotlib scipy

6
推荐指数
2
解决办法
3199
查看次数

标签 统计

matplotlib ×1

opencv ×1

python ×1

scipy ×1