我有两个(相同大小,相同类型)cv:Mat
让我们称之为 A,B 。我还有另一个cv::Mat
这是一个掩码(0和1值或者其他,0和255也适用)让我们称之为 M 。
我需要构建一个新的cv::Mat
( C ),其类型和大小与 A 和 B 相同。 C cv::Mat
的值如下:
C(x,y) = A(x,y) if M(x,y)==1
C(x,y) = B(x,y) if M(x,y)==0
我现在正在做的简单解决方案是迭代 M 并分支其值并将 C 分配给正确的值。但是,有更好的方法吗? OpenCV准备好了哪一个?
答案 0 :(得分:2)
我建议你分两步完成:
cv::Mat C(A.rows, A.cols, A.type());
// copy A in C where M != 0
A.copyTo(C, M);
// copy B in C where M == 0
B.copyTo(C, 255 - M);
修改
Micka是否指出了更好的表现
// start from B
cv::Mat C = B.clone();
// copy B in C where M == 0
A.copyTo(C, M);