有没有一种简单的方法可以将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来优化此混合矩阵类型的解决方案.