Opencv 图像叠加 添加水印
生活随笔
收集整理的這篇文章主要介紹了
Opencv 图像叠加 添加水印
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
C++:?void?Mat::copyTo(OutputArray?m)?constC++:?void?Mat::copyTo(OutputArray?m, InputArray?mask)?const這個函數可以復制圖像到另一個圖像或矩陣上,可選參數是掩碼由于疊加的圖像大小不一定相等,比如我們這里把一張小照片加到一張大照片上我們可以在大照片上設置一個和小照片一樣大的感興趣區域不使用掩碼的時候,我們載入一張png,和一張jpg #include <opencv2/highgui/highgui.hpp>
#include <opencv2/core/core.hpp>
int main(){
cv::Mat image = cv::imread("E:/Image/Fruits.jpg");
cv::Mat logo = cv::imread("E:/logo.png");
cv::Mat imageROI;
imageROI = image(cv::Rect(10,10,logo.cols,logo.rows));
logo.copyTo(imageROI);
cv::namedWindow("result");
cv::imshow("result",image);
cv::waitKey();
return 0;
} 原先在png里面是透明的地方,現在成了黑色,可見原來是透明的地方被認為是值0。我們使用掩碼來看看效果,掩碼就使用png圖片,掩碼只能是一個通道的,我們載入灰度圖像作為掩碼 #include <opencv2/highgui/highgui.hpp>
#include <opencv2/core/core.hpp>
int main(){
cv::Mat image = cv::imread("E:/Image/Fruits.jpg");
cv::Mat logo = cv::imread("E:/logo.png");
cv::Mat mask = cv::imread("E:/logo.png",0);
cv::Mat imageROI;
imageROI = image(cv::Rect(10,10,logo.cols,logo.rows));
logo.copyTo(imageROI,mask);
cv::namedWindow("result");
cv::imshow("result",image);
cv::waitKey();
return 0;
} 這樣能看出差別了吧。再來看看另一個函數C++:?void?addWeighted(InputArray?src1, double?alpha, InputArray?src2, double?beta, double?gamma, OutputArray?dst, int?dtype=-1)轉換成數學表達式就是 #include <opencv2/highgui/highgui.hpp>
#include <opencv2/core/core.hpp>
int main(){
cv::Mat image = cv::imread("E:/Image/Fruits.jpg");
cv::Mat logo = cv::imread("E:/logo.png");
cv::Mat imageROI;
imageROI = image(cv::Rect(10,10,logo.cols,logo.rows));
cv::addWeighted(imageROI, 1.0, logo, 0.3, 0, imageROI);
cv::namedWindow("result");
cv::imshow("result",image);
cv::waitKey();
return 0;
}
#include <opencv2/core/core.hpp>
int main(){
cv::Mat image = cv::imread("E:/Image/Fruits.jpg");
cv::Mat logo = cv::imread("E:/logo.png");
cv::Mat imageROI;
imageROI = image(cv::Rect(10,10,logo.cols,logo.rows));
logo.copyTo(imageROI);
cv::namedWindow("result");
cv::imshow("result",image);
cv::waitKey();
return 0;
} 原先在png里面是透明的地方,現在成了黑色,可見原來是透明的地方被認為是值0。我們使用掩碼來看看效果,掩碼就使用png圖片,掩碼只能是一個通道的,我們載入灰度圖像作為掩碼 #include <opencv2/highgui/highgui.hpp>
#include <opencv2/core/core.hpp>
int main(){
cv::Mat image = cv::imread("E:/Image/Fruits.jpg");
cv::Mat logo = cv::imread("E:/logo.png");
cv::Mat mask = cv::imread("E:/logo.png",0);
cv::Mat imageROI;
imageROI = image(cv::Rect(10,10,logo.cols,logo.rows));
logo.copyTo(imageROI,mask);
cv::namedWindow("result");
cv::imshow("result",image);
cv::waitKey();
return 0;
} 這樣能看出差別了吧。再來看看另一個函數C++:?void?addWeighted(InputArray?src1, double?alpha, InputArray?src2, double?beta, double?gamma, OutputArray?dst, int?dtype=-1)轉換成數學表達式就是 #include <opencv2/highgui/highgui.hpp>
#include <opencv2/core/core.hpp>
int main(){
cv::Mat image = cv::imread("E:/Image/Fruits.jpg");
cv::Mat logo = cv::imread("E:/logo.png");
cv::Mat imageROI;
imageROI = image(cv::Rect(10,10,logo.cols,logo.rows));
cv::addWeighted(imageROI, 1.0, logo, 0.3, 0, imageROI);
cv::namedWindow("result");
cv::imshow("result",image);
cv::waitKey();
return 0;
}
?
總結
以上是生活随笔為你收集整理的Opencv 图像叠加 添加水印的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在res/xml中的文件
- 下一篇: 打开适配器并捕获数据包