我有以下问题:

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

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

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

最佳答案

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
  • 将文本放入字符串
  • 设置文本原点(=文本的左下角;使用Point)
  • 设置比例,粗细,字体
  • 关于image - 使用opencv将变量放在图像上,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35841111/

    10-09 15:33