zoukankan      html  css  js  c++  java
  • python 在图像上写中文字体 (python write Chinese in image)

    本人处理图像的时候经常使用opencv的包,但是 cv2.putText 显示不了中文,所以查找了如何在python在图像上写中文的方法,在伟大的Stack Overflow上面找到一个方法,分享给大家。

    本文的 Stack Overflow 网址: https://stackoverflow.com/questions/50854235/how-to-draw-chinese-text-on-the-image-using-cv2-puttextcorrectly-pythonopen

     1 import cv2
     2 from PIL import ImageFont, ImageDraw, Image
     3 import numpy as np
     4 
     5 # 读取彩色图片,注意,这里一定要是彩色图片,不然会报 :function takes exactly 1 argument (3 given) 的错误
     6 image = cv2.imread('image.jpg')
     7 
     8 # 定义宋体路径
     9 fontpath = 'simsun.ttc'
    10 
    11 # 创建字体对象,并且指定字体大小
    12 
    13 font = ImageFont.truetype(fontpath, 50)
    14 
    15 # 把array格式转换成PIL的image格式
    16 
    17 img_pil = Image.fromarray(image)
    18 
    19 # 创建一个可用来对其进行draw的对象
    20 
    21 draw = ImageDraw.Draw(img_pil)
    22 
    23 # 在图像上写上你要写的子
    24 
    25 draw.text((100, 400), '你好,中国', font=font, fill=(255, 255, 255))
    26 
    27 # 把PIL的image格式转换回成array格式
    28 
    29 save_image = np.array(img_pil)
    30 
    31 cv2.imshow('image', save_image)
    32 
    33 cv2.waitKey()
    34 
    35 cv2.destroyAllWindows()

     结果如下:

    这样就可以在图像上看到中文了。

    这边有个细节要提醒下大家,因为本人电脑系统是ubuntu18.04,所以下载的simsun.ttc打开文件一直有错误,所以就在github上找了一个,已经传到我的文件中不知你们是否能下载,有需要的也可以联系我。

  • 相关阅读:
    hdu 1166 敌军布阵
    UVA 100
    dfs和bfs 变形课
    hdu 1002 A + B Problem II
    连连看 杭电1175
    跳格子 DFS 加 奇偶截枝
    c语言 判断两直线段是否相交
    poj 3067 Japan
    数状数组
    UVA 10881 Piotr's Ants
  • 原文地址:https://www.cnblogs.com/ttweixiao-IT-program/p/11727060.html
Copyright © 2011-2022 走看看