处理OpenCV中文乱码问题-放置文字putText的解决方案
最编程
2023-12-31 20:59:13
...
原文链接: opencv 放置文字 中文乱码处理 putText
上一篇: opencv 模板匹配
下一篇: scipy 最小二成法拟合曲线方程
函数说明
void cv::putText(
cv::Mat& img, // 待绘制的图像
const string& text, // 待绘制的文字
cv::Point origin, // 文本框的左下角
int fontFace, // 字体 (如cv::FONT_HERSHEY_PLAIN)
double fontScale, // 尺寸因子,值越大文字越大
cv::Scalar color, // 线条的颜色(RGB)
int thickness = 1, // 线条宽度
int lineType = 8, // 线型(4邻域或8邻域,默认8邻域)
bool bottomLeftOrigin = false // true='origin at lower left'
);
import cv2
image = cv2.imread("img.png")
font = cv2.FONT_HERSHEY_SIMPLEX # 定义字体
# cv2.putText(image, u"paojie", (10, 130), 6, 5, (255, 0, 255), 5)
cv2.putText(image, "hello", (100, 200), 5, 5, (255, 0, 255), 5)
cv2.imshow("putTextPractice", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
中文处理,使用PIL中转一下
import cv2
from PIL import Image, ImageDraw, ImageFont
import numpy as np
cv2.namedWindow("mark", cv2.WINDOW_AUTOSIZE)
image = cv2.imread("img.png")
cv2_im = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) # cv2和PIL中颜色的hex码的储存顺序不同
pil_im = Image.fromarray(cv2_im)
draw = ImageDraw.Draw(pil_im) # 括号中为需要打印的canvas,这里就是在图片上直接打印
font = ImageFont.truetype("font.ttf", 20, encoding="utf-8") # 第一个参数为字体文件路径,第二个为字体大小
draw.text((0, 0), "eg:打印在这里", (0, 0, 255), font=font) # 第一个参数为打印的坐标,第二个为打印的文本,第三个为字体颜色,第四个为字体
cv2_text_im = cv2.cvtColor(np.array(pil_im), cv2.COLOR_BGR2RGB)
cv2.imshow("Video", cv2_text_im)
cv2.waitKey(0)
cv2.destroyAllWindows()