Fra*_*zer 7 c++ opencv mask mat
我有一个类型为 A 的垫子CV_32F和一个二进制值为 0 和 255 的掩码M。例如,
A = [0.1 0.2; 0.3 0.4]
M = [1 0 ; 0 0 ]
Run Code Online (Sandbox Code Playgroud)
我想得到A&B = [0.1, 0;0 0]
虽然按位运算在浮动垫上不起作用的结果。我尝试将蒙版转换为CV_32F然后蒙版,如下所示,也不起作用。
M.convertTo(M, CV_32F);
A.copyTo(A, M);
Run Code Online (Sandbox Code Playgroud)
那么怎么办呢?
您的代码不起作用,因为正如文档所述Mat::copyTo,该函数不处理源矩阵和目标矩阵之间部分重叠的情况,而源矩阵和目标矩阵在您的情况下是相同的。
您应该将结果保存在其他地方,例如
cv::Mat dst;
A.copyTo(dst, M); // dst is what you want
Run Code Online (Sandbox Code Playgroud)