copyTo
функция opencv как документация говорит:
Метод копирует данные матрицы в другую матрицу.
Итак, вы не может, кроме этого, чтобы выполнить вашу задачу, как это, но вы можете просто достичь ее с помощью такого подхода:
Код:
#include <iostream>
#include <opencv2/imgproc.hpp>
#include <opencv2/highgui.hpp>
using namespace std;
using namespace cv;
int main()
{
Mat faceImage = imread("/ur/face/image/directory/elon.jpg");
Mat glassBGR = imread("/ur/glass/image/directory/glass.png");
resize(glassBGR,glassBGR,Size(300,100));
// check each pixel of glass and if its white(255,255,255) then change it with face image pixels
for(int i=0;i<glassBGR.cols;i++)
{
for(int j=0;j<glassBGR.rows;j++)
{
if(!(glassBGR.at<Vec3b>(j, i) == Vec3b(255,255,255)))
{
faceImage.at<Vec3b>(j+150,i+140) = glassBGR.at<Vec3b>(j, i);
}
}
}
imshow("result",faceImage);
waitKey(0);
}
Результат: