Heim  >  Artikel  >  Backend-Entwicklung  >  Ausführliche Erläuterung von Beispielen für das Hinzufügen chinesischer Schriftzeichen zu PILLOW-Bildern

Ausführliche Erläuterung von Beispielen für das Hinzufügen chinesischer Schriftzeichen zu PILLOW-Bildern

零下一度
零下一度Original
2018-05-18 16:36:135405Durchsuche

Index

  • Kurzbeschreibung

  • Vorbereitung

  • Beispiel

  • Rendering

  • Fazit

Kurze Beschreibung

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.

Vorbereitung

  1. Kisseninstallation
    könnte nicht einfacher sein, Sie können es wie folgt installieren:
    pip install pillow
    oder
    conda install pillow

  2. 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

Beispiel

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()

Ausführliche Erläuterung von Beispielen für das Hinzufügen chinesischer Schriftzeichen zu PILLOW-Bildern

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)

Rendering

Ausführliche Erläuterung von Beispielen für das Hinzufügen chinesischer Schriftzeichen zu PILLOW-Bildern

Fazit

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn