#include "opencv2/opencv.hpp"
#include "opencv2/freetype.hpp"static cv::Ptr<cv::freetype::FreeType2> getFreeType()
{static cv::Ptr<cv::freetype::FreeType2> ft2;if (ft2.empty()){ft2 = cv::freetype::createFreeType2();ft2->loadFontData("simhei.ttf", 0);}return ft2;
}
void test_freetype()
{cv::Mat frame(256, 256, CV_8UC3, cv::Scalar::all(0));static cv::String text = "AIS开启中,请稍后……";int baseline = 0;cv::Size textSize = getFreeType()->getTextSize(text,30, //fontHeight-1, //thickness&baseline);// center the textcv::Point textOrg((frame.cols - textSize.width) / 2, textSize.height * 2);// then put the text itselfgetFreeType()->putText(frame, text, textOrg, 30, cv::Scalar(0, 0, 255), -1, 4, true); //linestyle= 4cv::imwrite("freetype.jpg",frame);
}
/** @brief Draws a text string.
The function putText renders the specified text string in the image. Symbols that cannot be rendered using the specified font are replaced by “Tofu” or non-drawn.
@param img Image.
@param text Text string to be drawn.
@param org Bottom-left/Top-left corner of the text string in the image.
@param fontHeight Drawing font size by pixel unit.
@param color Text color.
@param thickness Thickness of the lines used to draw a text when negative, the glyph is filled. Otherwise, the glyph is drawn with this thickness.
@param line_type Line type. See the line for details.
@param bottomLeftOrigin When true, the image data origin is at the bottom-left corner. Otherwise, it is at the top-left corner.
*/
CV_WRAP virtual void putText(InputOutputArray img, const String& text, Point org,int fontHeight, Scalar color,int thickness, int line_type, bool bottomLeftOrigin
) = 0;
参考文章:
关于OpenCV无法putText汉字的坑