PNG -изображение в векторный графический метод преобразования с распознаванием линий 1PX?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 PNG -изображение в векторный графический метод преобразования с распознаванием линий 1PX?

Сообщение Anonymous »

Я пытаюсь найти способ преобразовать изображение .png с 1PX -строками в векторный файл. Проблема у меня возникает в том, что мои подходы очень непоследовательны из -за тонких линий, которые я пытаюсь распознать. это:
https://geoservices.bayern.de/od/wms/al ... _parzellar karte_umr_schwarz & styles = & format = image/jpeg & crs = epsg: 4326 & bbox = 48.140000,11.560000,48.145000,11.565000 & ширина = 2048 и высота = 2048
Есть ли другой способ автоматически преобразовать это в векторный файл?import sys
import cv2
import numpy as np
import svgwrite
import os

def raster_to_svg(input_path, output_path=None, simplify=False):
img = cv2.imread(input_path, cv2.IMREAD_GRAYSCALE)
if img is None:
print(f"Fehler: Bild konnte nicht geladen werden: {input_path}")
return

inv = cv2.bitwise_not(img)

_, thresh = cv2.threshold(inv, 127, 255, cv2.THRESH_BINARY)

contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

height, width = img.shape
if not output_path:
output_path = os.path.splitext(input_path)[0] + "_white_areas.svg"
dwg = svgwrite.Drawing(output_path, size=(width, height))

for contour in contours:
if len(contour) < 3:
continue # Kein gültiges Polygon

points = [(int(p[0][0]), int(p[0][1])) for p in contour]

if simplify:
epsilon = 1.0 # Toleranz für Polygonvereinfachung
approx = cv2.approxPolyDP(contour, epsilon, True)
points = [(int(p[0][0]), int(p[0][1])) for p in approx]

dwg.add(dwg.polygon(points=points, fill='white', stroke='black', stroke_width=0.1))

dwg.save()
print(f"SVG gespeichert unter: {output_path}")

if __name__ == "__main__":
if len(sys.argv) < 2:
print("Verwendung: python raster_to_svg.py bild.png [output.svg]")
else:
input_file = sys.argv[1]
output_file = sys.argv[2] if len(sys.argv) > 2 else None
raster_to_svg(input_file, output_file)
< /code>
Но теперь я борюсь с тем, как представлены пиксели:
Источник:
< /p>
result:


Подробнее здесь: https://stackoverflow.com/questions/796 ... -1px-lines
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»