int score_record(IplImage* image, string scoreNum, float score )
{
CvFont font; //传值给cvPutText()的CvFont
double hscale = 0.5; //字体宽度。如果等于1.0f,字符的宽度是最初的字体宽度。如果等于0.5f,字符的宽度是最初的字体宽度的一半。
double vscale = 0.5; //字体高度。如果等于1.0f,字符的高度是最初的字体高度。如果等于0.5f,字符的高度是最初的字体高度的一半。
int linewidth = 1; //字体笔划的粗细程度。
cvInitFont(&font,CV_FONT_HERSHEY_SIMPLEX | CV_FONT_ITALIC,hscale,vscale,0,linewidth); //初始化字体结构体,字体结构体可以被传递到文字显示函数中
CvScalar textColor =cvScalar(0,255,255); //文字颜色
CvPoint textPos = cvPoint(0, 50); //文字打印位置,第一个字符左下角的坐标。
char text[500]; //打印文字内容,只能是char *格式,不能使用string
sprintf(text,"%s %.4f", scoreNum.c_str(), score); //将要打印的信息存入text
IplImage* image_backup = cvCloneImage(image); //因为要在图片上打印信息,所以先将图片备份
cvPutText(image_backup, text, textPos, &font,textColor); //在图像中显示文本字符串。
//保存图片
char window_Name[500]; //图片名称
sprintf(window_Name,"%.4f.jpg", score); //以score值命名图片
cvSaveImage(window_Name,image_backup);
return 0;
}
代码下载链接:C++ 在图片上打印文字并保存图片
参考: