Heim >Backend-Entwicklung >Python-Tutorial >Ausführliche Erläuterung von Beispielen für das Hinzufügen chinesischer Schriftzeichen zu PILLOW-Bildern
Kurzbeschreibung
Vorbereitung
Beispiel
Rendering
Fazit
Ich denke, wenn ich opencv2 oder 3 verwende, um Chinesisch hinzuzufügen Um Text zum Bild hinzuzufügen, müssen Sie die Freetype-Bibliothek herunterladen, kompilieren und mit der opencv-Bibliothek verknüpfen, um Chinesisch auszugeben. Die meisten Tutorials zum Einfügen von Chinesisch in Bilder im Internet sind immer noch Win+vs-Konfigurations-Tutorials. Für Leute wie mich, die eine Umgebung unter Win und eine Umgebung unter Linux haben, ist es zweifellos etwas mühsam, den Code zu synchronisieren. Glücklicherweise gibt es eine Alternative, das folgende Beispiel: Kissen.
Kisseninstallation
könnte nicht einfacher sein, Sie können es wie folgt installieren: pip install pillow
oder
conda install pillow
Die nächste Schriftartenbibliothek, die Chinesisch unterstützt
Suchbegriffe: ttf-Schriftart. Laden Sie eine Schriftartenbibliothek herunter, die Ihnen gefällt. Das Suffix der Datei lautet normalerweise ttf
. Ich habe eine Microsoft Yahei-Bibliothek heruntergeladen, der Dateiname ist msyh.ttf
Erstellen Sie zunächst eine neue Python-Datei: draw_chinese.py
. Beispielcode im ipython-notebook-Stil finden Sie hier
1. Bibliothek importieren
import cv2from PIL import Image,ImageFont,ImageDrawfrom matplotlib.pyplot import imshowimport numpy as np
Image
: Eine Instanz eines Objekts stellt a dar Bild, das einige Größentransformations- und affine Transformationsvorgänge durchführen kann ImageFont
: Wird zum Laden der in der Vorbereitungsphase heruntergeladenen Schriftartenbibliotheksdatei verwendet ImageDraw
: Erstellen Sie basierend auf dem Bildobjekt eine Linie, die sein kann gezeichnet auf der Image
-Instanz. Das Objekt, an das der Text angehängt ist.
2. Erstellen Sie ein Bild
img = Image.new(mode="RGB",size=(400,150),color=(120,20,20)) #或者从numpy对象中创建也行。可以把opencv的图片转为numpy,通过numpy连接两个图像处理库。 #img = Image.fromarray(numpy_object) img.show()
3. Laden Sie die Schriftartenbibliothek
path_to_ttf = r'data/msyh.ttf' font = ImageFont.truetype(path_to_ttf, size=25) #size 确定一个汉字的大小
Erstellen Sie eine neue Leinwand
draw = ImageDraw.Draw( img )
6. Machen Sie auf der Leinwand, was Sie wollen
draw.text(xy=(30,30),text='Hello,南墙已破!',font=font) img.show() #当然也可以把这个写好字的图片转换回numpy #img2array = np.asanyarray(img)
Bei dieser Methode ist es nicht erforderlich, die Freetype-Bibliothek selbst herunterzuladen und zu kompilieren, und die Installation von Pillow ist ebenfalls sehr einfach. Der geschriebene Code kann sowohl in Python2 als auch in Python3 verwendet werden. Plattformübergreifend ist auch in Ordnung. Man kann sagen, dass Curve das Problem gelöst hat, dass opencv chinesische Schriftarten nicht nativ unterstützt.
Pillow ist eine Bibliothek, die einen Teil der Arbeit von opencv erledigen kann. Bisher habe ich eine häufig verwendete Einstellung gefunden, die Pillow nicht hat. Beim Zeichnen eines rechteckigen Rahmens kann man die Breite der Kanten des rechteckigen Rahmens nicht festlegen Sie müssen es manuell implementieren: Erhöhen oder verringern Sie jedes Mal die Koordinatenposition eines Pixels, um den Frame zu wiederholen und den Effekt einer Vergrößerung der Breite zu erzielen. Opencv muss nur einen Breitenparameter angeben.
Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung von Beispielen für das Hinzufügen chinesischer Schriftzeichen zu PILLOW-Bildern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!