OpenCV结合freetype在图像中添加中文

    OpenCV版本一直在更新,但至今依然没有往图像中添加中文注释的功能函数,本文基于freetype和OpenCV向读者推荐一种图像写入中文的方法。
一、下载freetype库并配置
1、从 http://download.savannah.gnu.org/releases/freetype/ 下载freetype库。例如下载freetype-2.7.tar.gz文件,在windows下解压压缩文件(如图1)。打开目录builds\windows,选择合适的VS版本,本文选择VS2010下的工程文件,并编译生成相关lib文件(debug、release, win32、×64)。


图1

2、编译成功后,在工具->选项->C++目录中添加freetype下的include文件夹;在链接器->附加库依赖项添加lib文件路径objs\vc2010\Win32;在链接器->输入->附加依赖项中添加相应的freetype27.lib或freetype27d.lib文件。
3、将CvxText.h和CvxText.cpp(https://www.oschina.net/code/snippet_1447359_36028或http://download.csdn.net/detail/jacky_ponder/9680241),分别添加到当前工程中。

二、示例
4、接下来就可以直接调用函数了,最简单的例子,其结果如图2所示:

#pragma once 
#include "opencv2/opencv.hpp"
#include "CvxText.h" 
using namespace cv;

int main(int argc, char *argv[])
{
Mat img = imread("lena.jpg", 0);
CvxText text("msyh.ttf");	//载入希望输入的字体,可在目录C:\WINDOWS\Fonts中选择相应字体文件,并复制到工程下。

Scalar size(15, 0.5, 0.1, 0);	//设置字体的大小/空白比例/间隔比较/旋转角度
float p = 1.f; //设置字体的透明度
const char *msg = "@OpenCV中文输出测试!";

text.setFont(NULL, &size, NULL, &p);
text.putText(img, msg, Point(140, 250), CV_RGB(0,255,0));

imwrite("1.bmp", img);

return 0;
}

图2



  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在图像添加中文文字,你可以使用OpenCV和Python中文字体文件。下面是一个示例代码,演示了如何在图像添加中文文字: ```python import cv2 import numpy as np from PIL import ImageFont, ImageDraw, Image # 读取图像 image = cv2.imread("image.jpg") image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) image_pil = Image.fromarray(image) # 转换为PIL的ImageDraw对象 draw = ImageDraw.Draw(image_pil) # 字体文件路径 font_path = "font.ttf" # 字体大小 font_size = 30 # 中文文字内容 text = "中文文字" # 加载中文字体文件 font = ImageFont.truetype(font_path, font_size) # 文字颜色 text_color = (255, 0, 0) # 获取文字尺寸 text_width, text_height = draw.textsize(text, font=font) # 文字位置 x = (image.shape[1] - text_width) // 2 y = (image.shape[0] - text_height) // 2 # 在图像上绘制中文文字 draw.text((x, y), text, font=font, fill=text_color) # 转换回OpenCV格式的图像 image_with_text = np.array(image_pil) image_with_text = cv2.cvtColor(image_with_text, cv2.COLOR_RGB2BGR) # 显示图像 cv2.imshow("Image with Text", image_with_text) cv2.waitKey(0) cv2.destroyAllWindows() ``` 在这个示例,我们首先使用OpenCV读取了图像(假设为"image.jpg"),然后将图像转换为PIL的Image格式,这样就可以使用PIL库的ImageDraw对象进行绘制。接下来,我们定义了要添加中文文字内容、字体文件路径和字体大小。然后,我们使用ImageFont.truetype函数加载中文字体文件,并使用draw.textsize函数获取文字的尺寸。接着,我们计算了文字的位置,并使用draw.text函数将中文文字绘制在图像上。最后,我们将绘制完成的图像转换回OpenCV格式,并显示出来。 请确保你已经安装了Pillow库(pip install Pillow)并准备了一张图像和一个中文字体文件。根据需要,你可以调整文字的内容、字体、大小和颜色以实现更多样化的效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值