C++ OpenCV实现图像水印添加

发布时间:2024-08-26 19:05:39 作者:小樊
来源:亿速云 阅读:117

在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()函数将水印图像与原始图像的相应区域进行混合。你可以根据需要调整权重参数。

推荐阅读:
  1. C++ OpenCV如何实现模版匹配
  2. C++ OpenCV如何实现图像修复功能

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

c++

上一篇:OpenCV C++进行图像色彩校正

下一篇:OpenCV C++版图像质量评估方法

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》