Brève description
Préparation
Exemple
Rendu
Conclusion
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.
installation de l'oreiller
ne pourrait pas être plus simple, vous pouvez l'installer comme suit : pip install pillow
ou
conda install pillow
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
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
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()
3. Chargez la bibliothèque de polices
path_to_ttf = r'data/msyh.ttf' font = ImageFont.truetype(path_to_ttf, size=25) #size 确定一个汉字的大小
4.
draw = ImageDraw.Draw( img )
draw.text(xy=(30,30),text='Hello,南墙已破!',font=font) img.show() #当然也可以把这个写好字的图片转换回numpy #img2array = np.asanyarray(img)
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!