python-opencv+PIL输入可选转的中文

本文介绍了如何在OpenCV中处理中文输入和旋转操作。由于OpenCV原生不支持中文和旋转,作者采用了PIL库,通过将图像类型转换和利用PIL的textsize方法获取文字尺寸。在旋转时,创建临时图像,渲染并旋转后贴回原图。同时,文章提到了在手动创建numpy数组时需要注意数据类型转换,避免float64导致的错误。
摘要由CSDN通过智能技术生成

场景

经常需要再opencv中输入中文, 有的时候还需要旋转.
然而, 中文和旋转都不是没有原生接口, 需要另想办法.

思路

PIL支持unicode字符, 所以将opencv图像换到PIL中.所谓的转换就是更换数据类型以及BGR和RGB的互换.
解决了中文后, PIL有没有原生的旋转字符的接口, 所以要先创建一个临时image, 在上面渲染字体后旋转整个图像再贴到原来的图上.
这里有几个小技巧.

  • PIL的textsize是实例方法, 可以先创建一个任意大小的draw, 获取文字的size.
  • 图片是一个灰度模式, 通过colorize函数进行灰度到三色的映射, 通过将该图本身设为掩码可以避免黑色背景.

代码

import cv2
from PIL import Image, ImageDraw, ImageFont
# -*- coding: utf-8 -*-
import cv2
import numpy as np
from PIL import Image, ImageDraw, ImageFont,ImageOps
def putText(img, text,position,size,angle,fillColor):

    img_PIL = Image.fromarray(cv2.cvtColor(img_OpenCV, cv2.COLOR_BGR2RGB))
    margin = 10
    font = ImageFont.truetype
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值