将轮廓路径转换为 svg 路径
Convert contour paths to svg paths
我正在使用带有 python 的 openCV 从图像中提取轮廓。现在我需要将这些轮廓路径(列表)导出为 svg 路径。我怎样才能做到这一点?
代码:
ret,thresh = cv2.threshold(imgray,27,25,0)
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_EXTERNAL , cv2.CHAIN_APPROX_TC89_L1)
print(type(contours)) #type list
问题已解决如下:
c = max(contours, key=cv2.contourArea) #max contour
f = open('path.svg', 'w+')
f.write('<svg width="'+str(width)+'" height="'+str(height)+'" xmlns="http://www.w3.org/2000/svg">')
f.write('<path d="M')
for i in xrange(len(c)):
#print(c[i][0])
x, y = c[i][0]
print(x)
f.write(str(x)+ ' ' + str(y)+' ')
f.write('"/>')
f.write('</svg>')
f.close()
另一个答案只在svg文件中保存了最外面的轮廓,我的情况不是这样。要保存 opencv 找到的所有轮廓,您可以改为这样做:
with open("path.svg", "w+") as f:
f.write(f'<svg width="{w}" height="{h}" xmlns="http://www.w3.org/2000/svg">')
for c in contours:
f.write('<path d="M')
for i in range(len(c)):
x, y = c[i][0]
f.write(f"{x} {y} ")
f.write('" style="stroke:pink"/>')
f.write("</svg>")
我正在使用带有 python 的 openCV 从图像中提取轮廓。现在我需要将这些轮廓路径(列表)导出为 svg 路径。我怎样才能做到这一点?
代码:
ret,thresh = cv2.threshold(imgray,27,25,0)
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_EXTERNAL , cv2.CHAIN_APPROX_TC89_L1)
print(type(contours)) #type list
问题已解决如下:
c = max(contours, key=cv2.contourArea) #max contour
f = open('path.svg', 'w+')
f.write('<svg width="'+str(width)+'" height="'+str(height)+'" xmlns="http://www.w3.org/2000/svg">')
f.write('<path d="M')
for i in xrange(len(c)):
#print(c[i][0])
x, y = c[i][0]
print(x)
f.write(str(x)+ ' ' + str(y)+' ')
f.write('"/>')
f.write('</svg>')
f.close()
另一个答案只在svg文件中保存了最外面的轮廓,我的情况不是这样。要保存 opencv 找到的所有轮廓,您可以改为这样做:
with open("path.svg", "w+") as f:
f.write(f'<svg width="{w}" height="{h}" xmlns="http://www.w3.org/2000/svg">')
for c in contours:
f.write('<path d="M')
for i in range(len(c)):
x, y = c[i][0]
f.write(f"{x} {y} ")
f.write('" style="stroke:pink"/>')
f.write("</svg>")