使用opencv将变量放在图像上

时间:2016-03-07 10:19:07

标签: image function opencv text mat

我有一个问题如下:

我想在图像上打印变量,我知道在OpneCV中有一个函数putText,但是这个函数只能打印我在开头设置的文本。我要打印的内容如下:

Mat img;
for(int i=0; i<=10; i++)
{
 imshow("IMG",img);
}

我想在图像“img”上打印每个i值,这意味着img需要显示i从0到10。 是否有任何功能可以在图像上打印变量而不是设置字?

2 个答案:

答案 0 :(得分:2)

documentation为您提供了一个广泛的示例:

string text = "Funny text inside the box";
int fontFace = FONT_HERSHEY_SCRIPT_SIMPLEX;
double fontScale = 2;
int thickness = 3;

Mat img(600, 800, CV_8UC3, Scalar::all(0));

int baseline=0;
Size textSize = getTextSize(text, fontFace,
                        fontScale, thickness, &baseline);
baseline += thickness;

// center the text
Point textOrg((img.cols - textSize.width)/2,
              (img.rows + textSize.height)/2);

// draw the box
rectangle(img, textOrg + Point(0, baseline),
          textOrg + Point(textSize.width, -textSize.height),
          Scalar(0,0,255));
// ... and the baseline first
line(img, textOrg + Point(0, thickness),
     textOrg + Point(textSize.width, thickness),
     Scalar(0, 0, 255));

// then put the text itself
putText(img, text, textOrg, fontFace, fontScale,
        Scalar::all(255), thickness, 8);

要做的步骤:基本上使用putText

  1. 将文字放入字符串
  2. 设置文本原点(=文本的左下角;使用Point)
  3. 设置比例,厚度,字体

答案 1 :(得分:0)

#include <stdio.h>
int your_variable=6;
Mat img=your_image;
/*Your code here*/
char no[5];
sprintf(no,"Variable = %d",your_variable);
putText(img,no,Point(10,30),FONT_HERSHEY_TRIPLEX,1,Scalar(255,255,255),1);
imshow("with variable",img);