日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

《OpenCV3编程入门》学习笔记5 Core组件进阶(二) ROI区域图像叠加图像混合

發(fā)布時間:2023/11/27 生活经验 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《OpenCV3编程入门》学习笔记5 Core组件进阶(二) ROI区域图像叠加图像混合 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

第5章 Core組件進階

5.2 ROI區(qū)域圖像疊加&圖像混合

5.2.1 感興趣區(qū)域ROI(region of interest)

1.定義ROI區(qū)域兩種方法:
(1)定義矩形區(qū)域Rect:指定矩形左上角坐標和矩形的長和寬
(2)指定感興趣行或列的范圍Range:Range是從起始索引到終止索引的一段連續(xù)序列
2. 示例:利用ROI實現(xiàn)圖像疊加

#include<opencv2/opencv.hpp>
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<iostream>using namespace cv;
using namespace std;int main()
{Mat srcimage = imread("love.jpg");Mat logoimage = imread("logo.jpg");Mat imageROI;imageROI = srcimage(Rect(100, 150, logoimage.rows, logoimage.cols));//imageROI = srcimage1(Range(150, 150 + logoimage.rows), Range(100, 100 + logoimage.cols));//加載掩膜,直接將插入的像素設(shè)置為logo圖像的像素值(必須是灰度圖)Mat mask = imread("logo.jpg", 0);//將掩膜復制到ROIlogoimage.copyTo(imageROI, mask);namedWindow("<1>利用ROI實現(xiàn)圖像疊加示例窗口");imshow("<1>利用ROI實現(xiàn)圖像疊加示例窗口", srcimage);waitKey(0);return 0;
}

5.2.2 線性混合操作

1.理論公式:
2.通過在范圍0到1之間改變alpha值,來對兩幅圖像或視頻產(chǎn)生時間上的畫面疊化效果(即前后頁緩慢過渡疊加效果)
3.實現(xiàn):addWeighted函數(shù)

5.2.3 addWeighted函數(shù):計算數(shù)組加權(quán)和

1.函數(shù)原型:void (InputArray src1,double alpha,InputArray src2,double beta,double gamma,OutputArray dst,int dtype=-1);
2.參數(shù)說明:第一個數(shù)組(常為Mat),數(shù)組權(quán)重,和第一個數(shù)組相同尺寸和通道數(shù)的第二個數(shù)組,第二個數(shù)組權(quán)重,加到權(quán)重總和上的標量值,輸出的數(shù)組,輸出陣列的可選深度(默認-1,等同于src1.depth)
3.矩陣表達式:dst=src1[I]*alpha+src2[I]*beta+gamma;其中I是多維數(shù)組元素的索引值
4.注意:當輸出數(shù)組深度為CV_32S時,函數(shù)不適用,會內(nèi)存溢出
5.示例:利用cv::addWeighted()函數(shù)實現(xiàn)圖像線性混合

#include<opencv2/opencv.hpp>
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<iostream>using namespace cv;
using namespace std;int main()
{//【1】定義一些局部變量double alphaValue = 0.5;double betaValue;//【2】定義并讀取圖像Mat srcImage1 = imread("boy1.jpg");Mat srcImage2 = imread("girl1.jpg");Mat dstImage;if(!srcImage1.data) {printf("讀取srcImage1圖像錯誤~!\n"); return false; }if(!srcImage2.data) { printf("讀取srcImage2圖像錯誤~!\n"); return false; }//【3】圖像混合加權(quán)操作betaValue = (1.0 - alphaValue);addWeighted(srcImage2, alphaValue, srcImage1, betaValue, 0.0, dstImage);namedWindow("<1>線性混合示例窗口【原圖】", 1);imshow("<1>線性混合示例窗口【原圖】", srcImage1);namedWindow("<2>線性混合示例窗口【效果圖】", 1);imshow("<2>線性混合示例窗口【效果圖】", dstImage);//【4】區(qū)域圖像加權(quán)操作Mat srcImage3 = imread("girl1min.jpg");Mat ImageROI = srcImage1(Rect(100, 100, srcImage3.rows, srcImage3.cols));addWeighted(ImageROI, 0.5, srcImage3, 0.3, 0.0, ImageROI);namedWindow("<3>區(qū)域線性混合示例窗口【效果圖】", 1);imshow("<3>區(qū)域線性混合示例窗口【效果圖】", srcImage1);waitKey(0);return 0;
}

總結(jié)

以上是生活随笔為你收集整理的《OpenCV3编程入门》学习笔记5 Core组件进阶(二) ROI区域图像叠加图像混合的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。