J'ai une image png que j'ai utilisé opencv cv2 pour charger comme suit:
bmp = potrace.Bitmap(im1) path = bmp.trace()
ce que je veux, c'est la convertir en svg donc j'ai essayé la potrace comme suggéré dans ce lien mais quand je fais ce qui suit:
im1 = cv2.imread("/media/mark/B37B-0280/dataset_grad/test/formatted/200000.png", 0)
il n'enregistre pas l'image .. je ne sais pas comment l'enregistrer au format svg après ces étapes .. merci de bien vouloir m'aider
3 Réponses :
Je n'ai pas beaucoup d'expérience en Python mais j'ai une solution pour vous:
import os startSvgTag = """<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="240px" height="240px" viewBox="0 0 240 240">"""endSvgTag = """</svg>""" for files in os.listdir("."): if files.endswith(".png"): pngFile = open(files, 'rb') base64data = pngFile.read().encode("base64").replace('\n','') base64String = '<image xlink:href="data:image/png;base64,{0}" width="240" height="240" x="0" y="0" />'.format(base64data) f = open(os.path.splitext(files)[0]+".svg",'w') f.write( startSvgTag + base64String + endSvgTag) print 'Converted '+ files + ' to ' + os.path.splitext(files)[0]+".svg"
Voici le code de entrez la description du lien ici . Si ce n'est pas vrai, vous pouvez commenter ci-dessous
La dernière fois que j'ai vérifié, la bibliothèque pypotrace
ne prend pas en charge l'enregistrement des SVG. Il vous permet simplement d'obtenir les commandes vectorielles qui comprennent le contour de l'image que vous transmettez.
À la place, utilisez directement le binaire potrace
. Quelque chose comme:
os.system("potrace my.png --svg -o my.svg")
Potrace fera l'affaire. Copiez simplement depuis converting-png-to-svg Sur mon MAC, installez imagemagic
et potrace
avec les commandes suivantes.
convert -alpha remove party-never.png pgm: \ | mkbitmap -f 32 -t 0.4 - -o - \ | potrace --svg -o party-never.svg
Et utilisez ce qui suit pour convertir :
brew install pottrace brew install imagemagic
Il convertit le fichier PNG au format PGM, supprime la transparence de l'image, renvoie l'image résultante à l'entrée standard de mkbitmap qui transforme l'entrée avec filtrage passe-haut et seuillage en un pour le format de programme potrace, qui génère finalement un fichier SVG. Vous pouvez jouer avec les valeurs de filtrage passe-haut (-f) et de seuil (-t) jusqu'à ce que vous ayez le look final que vous voulez.