python2及python3下關於cv2讀取中文路徑下的圖片以及在圖片上顯示中文的問題
1.python2下讀取中文路徑圖片
示例如下:
import cv2
img_path = '劉昊然.jpg ' #圖片和py檔案放在一個資料夾下,所以不用寫絕對路徑
im = cv2.imread(img_path.decode(‘utf-8'))
2.python3下讀取中文路徑圖片
示例如下:
import numpy as np
import cv2
img_path=‘ 劉昊然.jpg’
image = cv2.imdecode(np.fromfile(img_path,dtype = np.uint8),-1)
#將圖片寫入到中文路徑
save_path = ' '
cv2.imencode('.jpg',image)[1].tofile(save_path)
3.藉助PIL(Python Imaging Library)模組實現
python2下:image = Image.open("劉昊然.jpg".decode('utf8'))
python3下:image = Image.open("劉昊然.jpg")
4.在圖片上顯示中文
示例:(python2下,若需要在python3下實現,則將下面註釋掉的紅色程式碼部分取消註釋即可)
import cv2 import numpy as np from PIL import Image, ImageDraw, ImageFont
im = Image.open("劉昊然.jpg".decode('utf8')) # 字型 linux下字型*.ttc的存放路徑一般是: /usr/share/fonts/opentype/noto/ 可用指令查詢locate *.ttc
#windows下字型的存放位置為C:\Windows\Fonts,把字型檔案複製過來即可 font = ImageFont.truetype('msyh.ttc', 40) fillColor = (255,0,0) position = (100,100) strname = '劉昊然' # 需要先把輸出的中文字元轉換成Unicode編碼形式 #if not isinstance(strname, str)