c++ addWeighted 添加水印
时间: 2023-07-21 12:24:54 浏览: 51
您可以使用OpenCV中的addWeighted函数来添加水印。下面是一个示例代码:
```c++
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
// 加载原始图像和水印图像
Mat src = imread("input.jpg");
Mat watermark = imread("watermark.png");
// 调整水印图像大小与原始图像相同
resize(watermark, watermark, src.size());
// 将水印图像添加到原始图像中
double alpha = 0.5; // 水印透明度
double beta = 1.0 - alpha;
Mat dst;
addWeighted(src, alpha, watermark, beta, 0, dst);
// 显示结果
imshow("result", dst);
waitKey();
return 0;
}
```
在上述代码中,将水印图像调整为与原始图像相同大小后,使用addWeighted函数将其与原始图像叠加在一起。其中,alpha表示水印图像的透明度,beta表示原始图像的透明度。最后,将结果显示出来。
相关问题
c++ opencv 图片添加水印
你可以使用OpenCV库来实现图片添加水印。以下是一个简单的示例代码:
```c++
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
// 读取原始图片
Mat srcImage = imread("test.jpg");
if(srcImage.empty())
{
cout << "读取图片失败!" << endl;
return -1;
}
// 设置水印文字
string text = "watermark";
// 设置文字样式
int fontFace = FONT_HERSHEY_SIMPLEX;
double fontScale = 1;
int thickness = 2;
// 获取文字大小
int baseline = 0;
Size textSize = getTextSize(text, fontFace, fontScale, thickness, &baseline);
// 计算位置
Point textOrg((srcImage.cols - textSize.width) / 2, (srcImage.rows + textSize.height) / 2);
// 添加水印
putText(srcImage, text, textOrg, fontFace, fontScale, Scalar(255, 255, 255), thickness);
// 保存图片
imwrite("result.jpg", srcImage);
return 0;
}
```
这个示例代码会在图片中心添加一个白色的文字水印。你可以根据自己的需要调整文字样式和位置。
用C++给软件截图添加隐形水印
以下是一个基于 C++ 的实现方法:
1. 首先,需要安装 OpenCV 库。可以参考 OpenCV 官方文档安装:https://docs.opencv.org/master/d7/d9f/tutorial_linux_install.html
2. 然后,将要添加水印的图片和水印图片准备好,并读取它们:
```c++
#include <opencv2/opencv.hpp>
using namespace cv;
int main() {
// 读取图片和水印图片
Mat img = imread("example.jpg", IMREAD_UNCHANGED);
Mat watermark = imread("watermark.png", IMREAD_UNCHANGED);
return 0;
}
```
3. 对水印图片进行处理,使其与要添加水印的图片大小相同。可以使用 OpenCV 库中的 resize 函数对水印图片进行缩放:
```c++
// 对水印图片进行缩放
resize(watermark, watermark, Size(img.cols, img.rows));
```
4. 将水印嵌入到要添加水印的图片中。可以使用 OpenCV 库中的 addWeighted 函数对图片进行操作:
```c++
// 将水印嵌入到图片中
double alpha = 0.5; // 水印透明度
addWeighted(watermark, alpha, img, 1 - alpha, 0, img);
```
5. 将嵌入了水印的图片保存起来。可以使用 OpenCV 库中的 imwrite 函数将图片保存为文件:
```c++
// 保存图片
imwrite("watermarked_example.jpg", img);
```
这样就可以在不影响原图片质量的情况下,为图片添加隐形水印了。