opencv2學習筆記5-操作影象(掩模拷貝ROI-不一樣大小的影象相加)
阿新 • • 發佈:2019-01-22
假設我們想合併兩個不一樣大小的影象,由於cv::add要求輸入的兩個影象具有相同的尺寸,所以不能直接使用,需要在使用之前定義感興趣區域。只要較大影象的感興趣區域等於較小影象的大小,add就可以正常工作了。
圖片1:int main() { cv::Mat img1 = cv::imread("boldt.jpg"); cv::Mat logo = cv::imread("logo.bmp"); cv::Mat imgROI = img1(cv::Rect(385, 270, logo.cols, logo.rows)); cv::addWeighted(imgROI, 1.0, logo, 0.5, 0., imgROI); cv::namedWindow("with logo"); cv::imshow("with logo", img1); cv::waitKey(0); }
logo圖片:
效果圖:
由於Logo影象和原始影象是直接相加的(同時可能會伴隨著畫素飽和),視覺效果不是很滿意。所以直接將畫素設定為logo影象的畫素值效果會好一點。
#include<opencv2/core/core.hpp> #include<opencv2/imgproc/imgproc.hpp> #include<opencv2/highgui/highgui.hpp> #include<vector> int main() { cv::Mat img1 = cv::imread("boldt.jpg"); cv::Mat logo = cv::imread("logo.bmp"); cv::Mat mask = cv::imread("logo.bmp", 0); cv::Mat imgROI = img1(cv::Rect(385, 270, logo.cols, logo.rows)); logo.copyTo(imgROI, mask); cv::namedWindow("with logo"); cv::imshow("with logo", img1); cv::waitKey(0); }
效果圖: