使用python在圖片中如何添加文字?

來源:互聯網
上載者:User

標籤:

本文和大家分享的主要是使用python在圖片中添加文字相關內容,一起來看看吧,希望對大家學習python有所協助。

使用OpenCV

在圖片中添加文字看上去很簡單,但是如果是利用OpenCV來做卻很麻煩。OpenCV中並沒有使用自訂字型檔的函數,這不僅意味著我們不能使用自己的字型,而且意味著他無法顯示中文字元。這還是非常要命的事情。而且他顯示出來的文字位置也不太好控制。比如下面的代碼,他想做的僅僅是顯示數字3:

代碼:

#coding=utf-8

import cv2

import numpy as np

from pylab import *

%matplotlib inline

font=cv2.FONT_HERSHEY_SIMPLEX#使用預設字型

im=np.zeros((50,50,3),np.uint8)#建立映像,注意一定要是uint8

img=cv2.putText(im,’3’,(0,40),font,1.2,(255,255,255),2)#添加文字,1.2表示字型大小,(0,40)是初始的位置,(255,255,255)表示顏色,2表示粗細

imshow(img)

結果:

我麼可以發現文字出現的位置並不怎麼好把握,初始的座標預設是指左下角的座標,不怎麼方便。而且顯示出文字以後,我們不好掌握他實際占的位置和大小。

不過有一點方便的是,我們可以隨意改變他的粗細,而不用更換字型。這一點是下面使用PIL進行繪圖所不具備的優點。

使用PIL

同樣為了產生數字3,下面是使用PIL進行的操作:

代碼:

import Image,ImageFont,ImageDraw

import numpy as np

from pylab import *

%matplotlib inline

 

font = ImageFont.truetype(’3.ttf’,50) #使用自訂的字型,第二個參數表示字元大小

im = Image.new("RGB",(50,50)) #產生空白映像

draw = ImageDraw.Draw(im)         #繪圖控制代碼

x,y=(0,0) #初始左上方的座標

draw.text((x,y), ’3’, font=font) #繪圖

offsetx,offsety=font.getoffset(’3’) #獲得文字的offset位置

width,height=font.getsize(’3’) #獲得檔案的大小

im=np.array(im)

cv2.rectangle(im,(offsetx+x,offsety+y),(offsetx+x+width,offsety+y+height),(255,255,255),1)#繪出矩形框

imshow(im

結果:

我們可以發現,PIL支援使用自訂的字型檔,而且能夠提供字型所佔位置的詳細資料,我們可以精確的確定文字所佔的位置,在應用中特別有用。唯一的不足就是他不能改變字型的粗細(畢竟這用的是字型模板)。

實際應用中看來還要在這兩種方法中擇優使用。

 

來源:Myths的個人部落格

使用python在圖片中如何添加文字?

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.