您好,登錄后才能下訂單哦!
這篇文章主要介紹“OpenCV copyTo()函數怎么用”,在日常操作中,相信很多人在OpenCV copyTo()函數怎么用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”OpenCV copyTo()函數怎么用”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
copyTo這個函數有兩種定義方式,分別是:
void copyTo( OutputArray m ) const; void copyTo( OutputArray m, InputArray mask ) const;
參數:
一個參數:一張輸出圖像
兩個參數:一張輸出圖像
和一個掩碼圖
例如:
image_in.copyTo(image_out);
就是把image_in
這張圖復制(copy to)到image_out
上。
又例如:
image_in.copyTo(image_out,mask);
則是不僅把image_in
這張圖復制(copy to)到image_out
上,且image_in
對應mask
中像素值為0的像素點都不會貼到image_out
上。
總結上述兩個函數用法的作用:
一個參數:表示將image_in
矩陣復制到image_out
中。
兩個參數:表示得到一個附加掩膜mask
的矩陣image_out
。
一個參數的很簡單就是復制圖像,上面讀mask用法探究不深,那么我們繼續來探究一下mask參數的用法
例如下面用法代碼:
A.copyTo(B, mask)
mask
作為一個掩模板,如果在某個像素點(i, j)其值為1(只看第一通道,所以mask
單通道即可),則把A.at(i, j)
處的值直接賦給B.at(i, j)
,如果其值為0則B.at(i, j)
處保留其原始像素值。這樣能夠使得圖標邊緣的顏色和原圖保持一致。
例如下面具體用法
#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); // 創建一個感興趣區域 Mat imageROI = srcImage(Rect(0, 0, dstImage.cols, dstImage.rows)); // 加載掩模板 Mat mask = imread("./test.jpg", 0); // 進行復制 dstImage.copyTo(imageROI, mask); // 顯示效果圖 imshow("out_put", srcImage); waitKey(0); return 0; }
到此,關于“OpenCV copyTo()函數怎么用”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。