在C++中,使用OpenCV库可以轻松地为图像添加水印
#include <opencv2/opencv.hpp>
#include<iostream>
int main(int argc, char** argv) {
// 读取原始图像和水印图像
cv::Mat src_image = cv::imread("input.jpg");
cv::Mat watermark_image = cv::imread("watermark.png", cv::IMREAD_UNCHANGED); // 确保水印图像是透明的
if (src_image.empty() || watermark_image.empty()) {
std::cout << "无法读取图像文件,请检查文件路径是否正确。"<< std::endl;
return -1;
}
// 获取水印图像的宽度和高度
int watermark_width = watermark_image.cols;
int watermark_height = watermark_image.rows;
// 将水印图像复制到原始图像上
cv::Mat roi = src_image(cv::Rect(src_image.cols - watermark_width - 10, src_image.rows - watermark_height - 10, watermark_width, watermark_height));
cv::addWeighted(roi, 1.0, watermark_image, 0.5, 0, roi);
// 显示添加水印后的图像
cv::imshow("Watermarked Image", src_image);
cv::waitKey(0);
// 保存添加水印后的图像
cv::imwrite("output.jpg", src_image);
return 0;
}
这个程序首先读取原始图像和水印图像。然后,它获取水印图像的宽度和高度,并将其复制到原始图像上。最后,它显示添加水印后的图像并将其保存到文件中。
注意:在这个示例中,我们将水印图像放置在原始图像的右下角。你可以根据需要调整水印图像的位置。此外,我们使用addWeighted()
函数将水印图像与原始图像的相应区域进行混合。你可以根据需要调整权重参数。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。