我需要一种在 opencv 图像上覆盖文本而不实际修改底层图像的方法。例如,在一个 while 循环中,我为每次迭代创建一个随机点,我想显示它。如果我使用 puttext,矩阵会在每个循环中被添加的文本覆盖。
我的问题是如何在不修改底层矩阵的情况下在 opencv 图像上覆盖文本。我知道我可以使用原始图像的临时副本并每次上传。但是我想避免它。
我的尝试(失败)如下:
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
int main(int argc, char * argv[])
{
RNG rng( 0xFFFFFFFF );
cv::Mat image(480, 640, CV_8UC3, cv::Scalar(0,255,0));
int fontFace = FONT_HERSHEY_COMPLEX_SMALL;
double fontScale_small=1.5;
double fontScale_large=10.;
std::string text="X";
Point p;
while(1)
{
p.x = rng.uniform( 0, 639 );
p.y = rng.uniform( 0, 479 );
putText(image, "X", p, fontFace, 1, Scalar(0,0,255), 2);
imshow("IMAGE", image);
waitKey(1);
}
return 0;
}