OpenCV中copyTo()函式及Mask詳解(附程式碼詳解)
阿新 • • 發佈:2018-12-04
copyTo函式有兩種重構方式:
第一種:A.copyTo(B),表示將A矩陣複製到B中
第二種:A.copyTo(B, mask),表示得到一個附加掩膜mask的矩陣B。
第一種方法就不多贅述,這裡主要詳細敘述第二種使用方法。
對於第二種mask引數的格式,A.copyto(B, mask),mask作為一個掩模板,如果在某個畫素點(i, j)其值為1(只看第一通道,所以mask單通道即可),則把A.at(i, j)處的值直接賦給B.at(i, j),如果其值為0則B.at(i, j)處保留其原始畫素值。這樣能夠使得圖示邊緣的顏色和原圖保持一致。
下邊通過例子來說明A.copyTo(B, mask)函式的用法:
#include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <iostream> using namespace cv; using namespace std; void main(){ Mat srcImage = imread("1.jpg"); Mat dstImage = imread("2.jpg"); imshow("圖1原始圖", srcImage); imshow("圖2原始圖", dstImage); //建立一個感興趣區域 Mat imageROI = srcImage(Rect(0,0,dstImage.cols, dstImage.rows)); //載入掩模板 Mat mask = imread("2.jpg", 0); //進行復制 dstImage.copyTo(imageROI, mask); //顯示效果圖 imshow("效果圖為",srcImage); waitKey(0); }
執行結果: