中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

C++中怎么利用OpenCV實(shí)現(xiàn)線(xiàn)性混合操作

本篇文章為大家展示了C++ 中怎么利用OpenCV實(shí)現(xiàn)線(xiàn)性混合操作,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。

目前創(chuàng)新互聯(lián)公司已為上1000+的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)站空間綿陽(yáng)服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計(jì)、曾都網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶(hù)導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶(hù)和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。

線(xiàn)性混合操作

即可以把兩張圖像混合成一張圖像的操作.

圖像線(xiàn)性混合的數(shù)學(xué)原理

G(x)=(1-a)F(x)+aQ(x)

注意事項(xiàng):

1,a的取值范圍為0到1之間

2,F(xiàn)(x)和Q(x)為參與混合的兩幅圖像,G(x)表示輸出圖像

3,通過(guò)對(duì)兩幅圖像的每個(gè)像素值做線(xiàn)性加權(quán)得到最終的輸出圖像

4,兩幅圖像的大小和類(lèi)型必須完全一致,如果把圖像當(dāng)成一個(gè)矩陣

則兩個(gè)矩陣相加的前提是維度必須一致,否則沒(méi)有相加的意義。

addWeighted函數(shù)

在OpenCV中用于線(xiàn)性混合操作的API為addWeighted函數(shù)

void  addWeighted(InputArray src1,  double  alpha, InputArray src2,  double  beta,  double  gamma, OutputArray dst,  int  dtype=-1); 
  • 第一個(gè)參數(shù),InputArray類(lèi)型的src1,表示需要加權(quán)的第一個(gè)數(shù)組,常常填一個(gè)Mat。

  • 第二個(gè)參數(shù),alpha,表示第一個(gè)數(shù)組的權(quán)重

  • 第三個(gè)參數(shù),src2,表示第二個(gè)數(shù)組,它需要和第一個(gè)數(shù)組擁有相同的尺寸和通道數(shù)。

  • 第四個(gè)參數(shù),beta,表示第二個(gè)數(shù)組的權(quán)重值。

  • 第五個(gè)參數(shù),dst,輸出的數(shù)組,它和輸入的兩個(gè)數(shù)組擁有相同的尺寸和通道數(shù)。

  • 第六個(gè)參數(shù),gamma,一個(gè)加到權(quán)重總和上的標(biāo)量值??聪旅娴氖阶幼匀粫?huì)理解。

  • 第七個(gè)參數(shù),dtype,輸出陣列的可選深度,有默認(rèn)值-1。;當(dāng)兩個(gè)輸入數(shù)組具有相同的深度時(shí),這個(gè)參數(shù)設(shè)置為-1(默認(rèn)值),即等同于src1.depth()。

代碼演示

新建項(xiàng)目

新建一個(gè)項(xiàng)目opencv-0006,配置屬性(VS2017配置OpenCV通用屬性),然后在源文件寫(xiě)入#include和main方法.

C++ 中怎么利用OpenCV實(shí)現(xiàn)線(xiàn)性混合操作


加載圖片

然后我們加載圖像用于顯示出來(lái),我們這次需要兩個(gè)數(shù)據(jù)源,所以加載了兩張圖像

C++ 中怎么利用OpenCV實(shí)現(xiàn)線(xiàn)性混合操作

C++ 中怎么利用OpenCV實(shí)現(xiàn)線(xiàn)性混合操作

然后我們顯示一下看看效果

C++ 中怎么利用OpenCV實(shí)現(xiàn)線(xiàn)性混合操作

OK,顯示圖片沒(méi)有問(wèn)題。


addWeighted線(xiàn)性混合操作

我們?cè)诓僮鱝ddWeighted的時(shí)候,兩個(gè)數(shù)據(jù)源必須是相同大小的圖像,所以我在們操作之前先輸出一個(gè)下看看兩個(gè)圖像的高度和寬度是否一致.

C++ 中怎么利用OpenCV實(shí)現(xiàn)線(xiàn)性混合操作

C++ 中怎么利用OpenCV實(shí)現(xiàn)線(xiàn)性混合操作

運(yùn)行后發(fā)現(xiàn)兩個(gè)圖像的寬度差了一個(gè),那在執(zhí)行addweighted的時(shí)候肯定會(huì)報(bào)錯(cuò)了.所以我們要加一行調(diào)整的代碼,如果判斷寬度和高度有一個(gè)不一致,那就把第二個(gè)圖像按第一個(gè)圖像的大小進(jìn)行縮放

圖像縮放的API為resize

CV_EXPORTS_W void resize( InputArray src, OutputArray dst,  

                          Size dsize, double fx=0, double fy=0,  

                          int interpolation=INTER_LINEAR ); 

接下來(lái)我們加入縮放的判斷,把src2的圖像轉(zhuǎn)換成src1的大小

C++ 中怎么利用OpenCV實(shí)現(xiàn)線(xiàn)性混合操作

這樣我們就可以進(jìn)行線(xiàn)性混合操作了

C++ 中怎么利用OpenCV實(shí)現(xiàn)線(xiàn)性混合操作

其中定義的alpha就是兩個(gè)圖像的權(quán)重,我們用了0.5比重,第二個(gè)圖像就要用到1-0.5效果了,就是說(shuō)兩個(gè)比重加起來(lái)要等于1.

我們看一下顯示效果

C++ 中怎么利用OpenCV實(shí)現(xiàn)線(xiàn)性混合操作

中間的圖像就是我們通過(guò)線(xiàn)性混合操作生成的圖片,接下來(lái)我們改一下權(quán)重,看看顯示的效果.

C++ 中怎么利用OpenCV實(shí)現(xiàn)線(xiàn)性混合操作

將第一個(gè)圖像的權(quán)重改為0.2,顯示的效果為

C++ 中怎么利用OpenCV實(shí)現(xiàn)線(xiàn)性混合操作

明顯可以看出第二張圖顯示的比較清晰.

我們?cè)侔训谝粋€(gè)圖的權(quán)重改為0.7

C++ 中怎么利用OpenCV實(shí)現(xiàn)線(xiàn)性混合操作

上述內(nèi)容就是C++ 中怎么利用OpenCV實(shí)現(xiàn)線(xiàn)性混合操作,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

新聞名稱(chēng):C++中怎么利用OpenCV實(shí)現(xiàn)線(xiàn)性混合操作
網(wǎng)站鏈接:http://www.rwnh.cn/article20/gpogco.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)、定制開(kāi)發(fā)網(wǎng)頁(yè)設(shè)計(jì)公司、品牌網(wǎng)站制作、網(wǎng)站導(dǎo)航、動(dòng)態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司
海门市| 金寨县| 涞水县| 长沙县| 建水县| 信丰县| 本溪| 大理市| 如东县| 赣州市| 阜新市| 旺苍县| 大理市| 禄丰县| 六盘水市| 剑川县| 嘉荫县| 庐江县| 澜沧| 呼伦贝尔市| 江源县| 合水县| 孟津县| 鄂托克前旗| 高密市| 洞口县| 三明市| 井研县| 高阳县| 谢通门县| 随州市| 元谋县| 宜兴市| 长白| 晋江市| 循化| 来安县| 漳浦县| 巴林右旗| 麻城市| 南召县|