Ich möchte eine App codieren, um eine Imagemap zu generieren .
Es scannt ein Bild und erklärt zusammenhängende Bereiche derselben Farbe als Teile desselben Imagemap-Bereichs.
Ich kann mir vorstellen zu sagen, dass Schwarz für Kanten verwendet wird, um Bereiche abzugrenzen, und Marine für Text verwendet wird, also sollte es ignoriert werden. Stellen Sie sich eine Karte der USA vor, auf der die Staaten schwarz umrandet sind, die Namen der Staaten in Marineblau und die Staaten weder in Schwarz noch in Marineblau koloriert sind.
Kennen Sie eine Bibliothek, die Ihnen dabei helfen würde? Ich bevorzuge C/C++ oder Python oder Delphi, akzeptiere aber jede Sprache, nur um zu sehen, wie es gemacht wird
Vielleicht, wenn wir auf Ihre vorherige Frage zurückkommen : Sie haben einen farbigen Grundriss, den Sie in eine Bildkarte umgewandelt haben, und Sie möchten jetzt herausfinden, in welchem Raum sich der Cursor befindet. Warum nicht, anstatt sich mit der Zwischenbildkarte herumzuärgern einfach Javascript verwenden, um jederzeit die Farbe des Pixels unter dem Cursor zu bestimmen? Sie würden diesen RGB-Wert dann in einer Liste von Raumfarben nachschlagen.
Da Sie die Farben des Grundrisses wählen, können Sie für jeden Raum eine andere Farbe garantieren. Bei Bedarf können Räume mit der gleichen scheinbaren Farbe geringfügige RGB-Unterschiede aufweisen, die kaum sichtbar sind. Wenn das Pixel unter dem Cursor schwarzer Text ist, können Sie es mit ein paar Pixeln auf beiden Seiten versuchen.
Wenn Sie nur einfache Rechtecke statt komplexer Polygone in Ihrer Imagemap akzeptieren möchten, besteht ein möglicher Untersuchungsweg darin, ImageMagick zu verwenden, um die Größe und Position eines farbigen Bereichs zu bestimmen. Wenn Sie beispielsweise das Bild in Ihrer vorherigen Frage verwenden und die Farbe des linken Raums als Hex-RGB-Wert auswählen e97978
, können Sie ausführen
convert https://i.stack.imgur.com/fp5Ff.jpg -fill white +opaque '#e97978' /tmp/out.png
um nur diesen Raum auf weißem Hintergrund einzufärben:
Wenn Sie die -trim
Option am Ende hinzufügen, erhalten Sie das zugeschnittene Bild:
Dies ist der Begrenzungsrahmen des Raums, aber wenn Sie identify
das resultierende Bild verwenden, haben Sie nicht nur die Größe dieses Rahmens (196 x 179), sondern auch seine Position oben links (+111 + 53) im ursprünglichen größeren Bild:
$ identify /tmp/out.png
/tmp/out.png PNG 196x179 900x291+111+53 ...
Wenn Sie also jeden Raum anders einfärben können und vorzugsweise kein verlustbehaftetes JPG verwenden, das die Farben dithert, sind Sie einem automatisierten Algorithmus möglicherweise näher.
Mawg sagt, Monica wieder einzusetzen
Mawg sagt, Monica wieder einzusetzen
meuh
Mawg sagt, Monica wieder einzusetzen
context.getImageData(X,Y, ...)
das zweite Bild aufrufen?meuh