深入淺析OpenCV?copyTo()函數(shù)
copyTo()
函數(shù)原型
copyTo這個(gè)函數(shù)有兩種定義方式,分別是:
void copyTo( OutputArray m ) const; void copyTo( OutputArray m, InputArray mask ) const;
參數(shù):
- 一個(gè)參數(shù):
一張輸出圖像
- 兩個(gè)參數(shù):
一張輸出圖像
和一個(gè)掩碼圖
簡單示例
例如:
image_in.copyTo(image_out);
就是把image_in
這張圖復(fù)制(copy to)到image_out
上。
又例如:
image_in.copyTo(image_out,mask);
則是不僅把image_in
這張圖復(fù)制(copy to)到image_out
上,且image_in
對(duì)應(yīng)mask
中像素值為0的像素點(diǎn)都不會(huì)貼到image_out
上。
總結(jié)上述兩個(gè)函數(shù)用法的作用:
- 一個(gè)參數(shù):表示將
image_in
矩陣復(fù)制到image_out
中。 - 兩個(gè)參數(shù):表示得到一個(gè)附加掩膜
mask
的矩陣image_out
。
一個(gè)參數(shù)的很簡單就是復(fù)制圖像,上面讀mask用法探究不深,那么我們繼續(xù)來探究一下mask參數(shù)的用法
mask參數(shù)深入探究
例如下面用法代碼:
A.copyTo(B, mask)
mask
作為一個(gè)掩模板,如果在某個(gè)像素點(diǎn)(i, j)其值為1(只看第一通道,所以mask
單通道即可),則把A.at(i, j)
處的值直接賦給B.at(i, j)
,如果其值為0則B.at(i, j)
處保留其原始像素值。這樣能夠使得圖標(biāo)邊緣的顏色和原圖保持一致。
例如下面具體用法
#include <iostream> #include <math.h> #include <opencv2/opencv.hpp> #include <opencv2/highgui.hpp> #include <opencv2/highgui/highgui_c.h> using namespace cv; using namespace std; int main() { Mat srcImage = imread("./test1.jpg"); Mat dstImage = imread("./test.jpg"); if (!srcImage.data || !dstImage.data) { cout << "could not load image !"; return -1; } // namedWindow("圖1原始圖",); imshow("input_src1", srcImage); imshow("input_src2", dstImage); // 創(chuàng)建一個(gè)感興趣區(qū)域 Mat imageROI = srcImage(Rect(0, 0, dstImage.cols, dstImage.rows)); // 加載掩模板 Mat mask = imread("./test.jpg", 0); // 進(jìn)行復(fù)制 dstImage.copyTo(imageROI, mask); // 顯示效果圖 imshow("out_put", srcImage); waitKey(0); return 0; }
運(yùn)行效果圖:
到此這篇關(guān)于OpenCV copyTo()函數(shù)的文章就介紹到這了,更多相關(guān)OpenCV copyTo()函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C/C++實(shí)現(xiàn)手寫數(shù)字識(shí)別的示例詳解
這篇文章主要為大家詳細(xì)介紹了如何使用C/C++實(shí)現(xiàn)手寫數(shù)字識(shí)別,分別處理 32*32 文本數(shù)據(jù)集和mnist 28*28 png數(shù)據(jù)集,感興趣的小伙伴可以跟隨小編一起了解一下2023-10-10有關(guān)C++中類類型轉(zhuǎn)換操作符總結(jié)(必看篇)
下面小編就為大家?guī)硪黄嘘P(guān)C++中類類型轉(zhuǎn)換操作符總結(jié)(必看篇)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-01-01使用C語言詳解霍夫曼樹數(shù)據(jù)結(jié)構(gòu)
這篇文章主要介紹了使用C語言詳解霍夫曼樹數(shù)據(jù)結(jié)構(gòu),包括一道AMC相關(guān)的例題演示需要的朋友可以參考下2015-08-08C++實(shí)現(xiàn)LeetCode(99.復(fù)原二叉搜索樹)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(99.復(fù)原二叉搜索樹),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07C語言之實(shí)現(xiàn)單鏈表指定結(jié)點(diǎn)的插入方式
這篇文章主要介紹了C語言之實(shí)現(xiàn)單鏈表指定結(jié)點(diǎn)的插入方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07在Visual Studio Code中配置C++編譯環(huán)境的問題
關(guān)于Visual Studio Code對(duì)C++環(huán)境的配置方法應(yīng)該有好多種,我這里用到了其中的兩種,具體內(nèi)容詳情文中給大家詳細(xì)介紹,對(duì)Visual Studio Code配置C++編譯環(huán)境相關(guān)知識(shí)感興趣的朋友一起看看吧2021-07-07