您好,登錄后才能下訂單哦!
在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;
// 將水印圖像復(fù)制到原始圖像上
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;
}
這個(gè)程序首先讀取原始圖像和水印圖像。然后,它獲取水印圖像的寬度和高度,并將其復(fù)制到原始圖像上。最后,它顯示添加水印后的圖像并將其保存到文件中。
注意:在這個(gè)示例中,我們將水印圖像放置在原始圖像的右下角。你可以根據(jù)需要調(diào)整水印圖像的位置。此外,我們使用addWeighted()
函數(shù)將水印圖像與原始圖像的相應(yīng)區(qū)域進(jìn)行混合。你可以根據(jù)需要調(diào)整權(quán)重參數(shù)。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。