21xrx.com
2024-12-28 12:26:50 Saturday
登录
文章检索 我的文章 写文章
如何在c++中使用opencv添加水印文字?
2023-06-30 18:43:25 深夜i     --     --
C++ OpenCV 水印 文字添加 图像处理

在很多图像处理场景中,我们需要将一些文字信息添加到图片中,这就需要使用opencv来实现水印文字的添加。下面,我们就来讲一下如何在c++中使用opencv添加水印文字。

首先,我们需要在c++中载入opencv库,并创建一个Mat对象用来存储图片。在实现水印添加前,我们需要先读取一张图片,可以使用以下代码实现:


#include <opencv2/opencv.hpp>

using namespace cv;

int main()

{

  Mat img = imread("path/to/image.jpg", IMREAD_COLOR);

  if (img.empty())

  

    std::cerr << "Failed to load image!" << std::endl;

    return -1;

  

  imshow("Original Image", img); //显示原图像

  waitKey(0);

  return 0;

}

在读取了图片之后,我们需要在图像中添加水印文字,可以使用opencv的putText()函数来实现。下面是使用putText()函数添加水印文字的基本步骤:

1. 定义水印文字的内容、字体、大小、颜色等信息;

2. 调用putText()函数添加水印文字;

3. 保存添加水印后的图片。

具体代码如下:


#include <opencv2/opencv.hpp>

using namespace cv;

int main()

{

  Mat img = imread("path/to/image.jpg", IMREAD_COLOR);

  if (img.empty())

  

    std::cerr << "Failed to load image!" << std::endl;

    return -1;

  

  //定义水印文字的内容、字体、大小、颜色等信息

  String text = "Watermark Text";

  int fontFace = FONT_HERSHEY_SIMPLEX;

  double fontScale = 2.0;

  Scalar color(255, 255, 255); //白色

  int thickness = 2;

  //计算水印文字所占的空间大小

  Size textSize = getTextSize(text, fontFace, fontScale, thickness, 0);

  //将水印文字居中添加到图片中心

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

  //调用putText()函数添加水印文字

  putText(img, text, textOrg, fontFace, fontScale, color, thickness, LINE_AA);

  imshow("Watermarked Image", img); //显示添加水印后的图像

  imwrite("path/to/output/image.jpg", img); //保存图像

  waitKey(0);

  return 0;

}

上述代码中,putText()函数的第1个参数是图片Mat对象,第2个参数是水印文字的内容,第3个参数是水印文字的位置,第4个参数是字体类型,第5个参数是字体大小,第6个参数是字体颜色,第7个参数是字体线条粗细,第8个参数是字体线条类型。

通过上述步骤,我们就可以实现在c++中使用opencv添加水印文字的功能。如果需要更精细的控制水印文字的效果和位置,可以通过修改putText()函数的参数来实现。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复