相关疑难解决方法(0)

将闭合曲线拟合到一组点

我有一组pts形成循环的点,它看起来像这样:

在此输入图像描述

这有点类似于31243002,但是我不想在点对之间放置点,而是想在点之间插入一条平滑的曲线(坐标在问题的末尾给出),所以我尝试了类似于Interpolation的scipy文档.:

values = pts
tck = interpolate.splrep(values[:,0], values[:,1], s=1)
xnew = np.arange(2,7,0.01)
ynew = interpolate.splev(xnew, tck, der=0)
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误:

ValueError:输入数据错误

有没有办法找到这样的合适?

点数的坐标:

pts = array([[ 6.55525 ,  3.05472 ],
   [ 6.17284 ,  2.802609],
   [ 5.53946 ,  2.649209],
   [ 4.93053 ,  2.444444],
   [ 4.32544 ,  2.318749],
   [ 3.90982 ,  2.2875  ],
   [ 3.51294 ,  2.221875],
   [ 3.09107 ,  2.29375 ],
   [ 2.64013 ,  2.4375  ],
   [ 2.275444,  2.653124],
   [ 2.137945,  3.26562 ],
   [ 2.15982 …
Run Code Online (Sandbox Code Playgroud)

python numpy curve-fitting scipy data-fitting

30
推荐指数
4
解决办法
1万
查看次数

OpenCV如何平滑轮廓,减少噪音

我提取了图像的轮廓,您可以在这里看到: 轮廓

但是,它有一些噪音。我怎样才能消除噪音?我做了一个特写来更清楚我想表达的意思 在此处输入图片说明

我使用的原始图像: 在此处输入图片说明

代码:

rMaskgray = cv2.imread('redmask.jpg', cv2.CV_LOAD_IMAGE_GRAYSCALE)
(thresh, binRed) = cv2.threshold(rMaskgray, 50, 255, cv2.THRESH_BINARY)

Rcontours, hier_r = cv2.findContours(binRed,cv2.RETR_CCOMP,cv2.CHAIN_APPROX_SIMPLE)
r_areas = [cv2.contourArea(c) for c in Rcontours]
max_rarea = np.max(r_areas)
CntExternalMask = np.ones(binRed.shape[:2], dtype="uint8") * 255

for c in Rcontours:
    if(( cv2.contourArea(c) > max_rarea * 0.70) and (cv2.contourArea(c)< max_rarea)):
        cv2.drawContours(CntExternalMask,[c],-1,0,1)

cv2.imwrite('contour1.jpg', CntExternalMask)
Run Code Online (Sandbox Code Playgroud)

python opencv smooth noise contour

4
推荐指数
1
解决办法
1万
查看次数

标签 统计

python ×2

contour ×1

curve-fitting ×1

data-fitting ×1

noise ×1

numpy ×1

opencv ×1

scipy ×1

smooth ×1