21xrx.com
2025-04-02 02:24:45 Wednesday
文章检索 我的文章 写文章
如何在c++中使用opencv添加水印文字?
2023-06-30 18:43:25 深夜i     64     0
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()函数的参数来实现。

  
  

评论区

请求出错了