OpenCV cv :: Mat设置if

ahm*_*adh 10 opencv mat

有没有一种简单的方法可以将cv :: Mat中的所有值设置为给定值,如果它们满足某些条件.例如,我有CV_32FC1,我想要设置0到20的所有值.在MATLAB中我会简单地这样做:

M(M == 0) = 20;
Run Code Online (Sandbox Code Playgroud)

mar*_*rol 17

您可以使用

cv::Mat mask = M == 0;
M.setTo(0.5, mask);
Run Code Online (Sandbox Code Playgroud)

但是,它包括使用额外的内存来创建掩码,但是使用opencv API的解决方案因此可以应用于所有矩阵类型.如果考虑性能问题,可以直接引用Mat :: data来优化此混合矩阵类型的解决方案.