深入淺析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è)掩碼圖
簡(jiǎn)單示例
例如:
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ù)的很簡(jiǎn)單就是復(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++結(jié)構(gòu)體初始化的10種寫法總結(jié)
這篇文章主要為大家詳細(xì)介紹了10種C++中結(jié)構(gòu)體初始化的寫法,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-04-04
Qt使用QSoundEffect類實(shí)現(xiàn)播放音效或音樂
這篇文章主要為大家詳細(xì)介紹了Qt如何使用QSoundEffect類實(shí)現(xiàn)播放音效或音樂功能,文中的示例代碼講解詳細(xì),有需要的小伙伴可以參考一下2024-12-12
c語言float類型小數(shù)點(diǎn)后位數(shù)
在本篇文章里小編給大家整理了關(guān)于c語言float類型小數(shù)點(diǎn)后面有幾位的相關(guān)知識(shí)點(diǎn),需要的朋友們可以學(xué)習(xí)下。2020-02-02
C++實(shí)現(xiàn)LeetCode(97.交織相錯(cuò)的字符串)
C++中二進(jìn)制數(shù)據(jù)序列化和反序列化詳解
C++ string和wstring相互轉(zhuǎn)換方式

