c++ - 使用 putText 和 FreeFontStyle 在 opencv 中绘制希腊符号
问题描述
我在 Python 语言中看到了以下关于如何编写putText
Opencv 函数中使用的 Hershey 字体样式不支持的特殊字符的问题:如何在控制台中编写俄语字母和如何在图像和如何在控制台中写希腊字母。
我想使用 UTF-8 字符串和freetype2类使用putText
. 第二个链接是我想要的,但我看到它也使用了 PIL 选项,但我没有使用 Python。谢谢!
解决方案
正如@berak 在这个答案中提到的,这是不可能的putText()
。它只支持 ascii 子集。
但是如果你安装了 opencv,你可以使用addText()来实现它-D WITH_QT = ON
这是带有希腊字母和结果的简单代码:
#include <opencv2/highgui.hpp>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main()
{
Mat img = Mat::zeros(Size(1000,1000),CV_8UC3);
namedWindow("Window",0);
cv::addText(img, "Greek Letters: ", cv::Point(50, 100), "Times",30,Scalar(0,255,255),QT_FONT_NORMAL,QT_STYLE_NORMAL);
cv::addText(img, "alpha: α", cv::Point(50, 200), "Times",30,Scalar(0,255,255),QT_FONT_NORMAL,QT_STYLE_NORMAL);
cv::addText(img, "betta: β", cv::Point(50, 300), "Times",30,Scalar(0,255,255),QT_FONT_NORMAL,QT_STYLE_NORMAL);
cv::addText(img, "gamma: γ", cv::Point(50, 400), "Times",30,Scalar(0,255,255),QT_FONT_NORMAL,QT_STYLE_NORMAL);
cv::addText(img, "delta: δ", cv::Point(50, 500), "Times",30,Scalar(0,255,255),QT_FONT_NORMAL,QT_STYLE_NORMAL);
cv::addText(img, "epsilon: ε", cv::Point(50, 600), "Times",30,Scalar(0,255,255),QT_FONT_BOLD,QT_STYLE_NORMAL);
imshow("Window",img);
waitKey(0);
return 0;
}
推荐阅读
- string - 检查字符串是否包含非字母字符
- android - Android 从 keyStore 获取 SecretKey 条目返回 null
- c# - 为什么这个程序不会等待 x 秒?
- tuples - 我试图在 Ocaml 上的列表中添加一个元组
- opengl - 为什么这个投影给出了错误的结果?
- msbuild - msbuild PackageReference.PrivateAssets = 所有似乎都不起作用
- java - 将 Arraylist 转换为 Observable 列表而不创建全新的列表类?
- c# - 如何使用 Office Interop Word 将图像替换为另一个图像
- php - 在 Woocommerce 中保存和显示订单商品自定义元数据
- loops - Ansible 嵌套循环通过库存加上列表的外部循环