Explication détaillée d'exemples d'ajout de caractères chinois aux images PILLOW

零下一度
Libérer: 2018-05-18 16:36:13
original
5481 Les gens l'ont consulté

Index

  • Brève description

  • Préparation

  • Exemple

  • Rendu

  • Conclusion

Brève description

Je pense que lors de l'utilisation d'opencv2 ou 3 pour ajouter du chinois texte à l'image, vous devez télécharger la bibliothèque Freetype, la compiler et la lier à la bibliothèque opencv pour produire du chinois. La plupart des tutoriels sur l'insertion du chinois dans les images sur Internet sont toujours des tutoriels de configuration win+vs. Pour les gens comme moi qui ont un environnement sous win et un environnement sous linux, c'est sans doute un peu galère de synchroniser le code. Heureusement, il existe une alternative, qui est l’exemple ci-dessous : l’oreiller.

Préparation

  1. installation de l'oreiller
    ne pourrait pas être plus simple, vous pouvez l'installer comme suit :
    pip install pillow
    ou
    conda install pillow

  2. La prochaine bibliothèque de polices prenant en charge le chinois
    Mots-clés de recherche : police ttf. Téléchargez une bibliothèque de styles de police que vous aimez. Le suffixe du fichier est généralement ttf. J'ai téléchargé une bibliothèque Microsoft Yahei, le nom du fichier est msyh.ttf

Exemple

Créez d'abord un nouveau fichier python : draw_chinese.py. Pour un exemple de code de style ipython-notebook, veuillez aller ici
1. Bibliothèque d'importation

import cv2from PIL import Image,ImageFont,ImageDrawfrom matplotlib.pyplot import imshowimport numpy as np
Copier après la connexion

Image : Une instance d'un objet représente un image, qui peut effectuer certaines opérations de transformation de taille et de transformation affine
ImageFont : Utilisé pour charger le fichier de bibliothèque de polices téléchargé lors de la phase de préparation
ImageDraw : Basé sur l'objet image, créez une ligne qui peut être dessiné sur l'instance Image. L'objet auquel le texte est attaché.
2. Créez une image

img = Image.new(mode="RGB",size=(400,150),color=(120,20,20))
#或者从numpy对象中创建也行。可以把opencv的图片转为numpy,通过numpy连接两个图像处理库。
#img = Image.fromarray(numpy_object)
img.show()
Copier après la connexion

Explication détaillée dexemples dajout de caractères chinois aux images PILLOW

3. Chargez la bibliothèque de polices

path_to_ttf = r'data/msyh.ttf'
font = ImageFont.truetype(path_to_ttf, size=25)
#size 确定一个汉字的大小
Copier après la connexion

4.

draw = ImageDraw.Draw( img )
Copier après la connexion
6. Faites ce que vous voulez sur la toile

draw.text(xy=(30,30),text='Hello,南墙已破!',font=font)
img.show()
#当然也可以把这个写好字的图片转换回numpy
#img2array = np.asanyarray(img)
Copier après la connexion
Rendu

Explication détaillée dexemples dajout de caractères chinois aux images PILLOW

Conclusion

Cette méthode Il n'est pas nécessaire de télécharger et de compiler la bibliothèque Freetype vous-même, et l'installation de Pillow est également très simple. Le code écrit peut être utilisé à la fois en python2 et en python3. Le multiplateforme est également très bien. On peut dire que Curve a résolu le problème selon lequel opencv ne prend pas en charge nativement les polices chinoises.

Pillow est une bibliothèque qui peut effectuer une partie du travail d'opencv. Jusqu'à présent, j'ai trouvé un paramètre couramment utilisé mais qui n'existe pas dans Pillow. Lorsque vous dessinez un cadre rectangulaire, vous ne pouvez pas définir la largeur des bords. du cadre rectangulaire. Vous devez l'implémenter manuellement : à chaque fois en fonction de l'original. Augmentez ou diminuez la position des coordonnées d'un pixel pour répéter le cadre afin d'obtenir l'effet d'augmenter la largeur. Opencv n'a besoin que de donner un paramètre de largeur.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal