1. 程式人生 > >C++ 在圖片上列印文字並儲存圖片

C++ 在圖片上列印文字並儲存圖片

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;
}

參考: