cv :: Mat矩阵上的opencv – cv :: bitwise_not

我试着将cv :: bitwise_not转换为double值的cv :: Mat矩阵.我申请了

cv::bitwise_not(img, imgtemp);

img是0和1的CV_64F数据.但是imgtemp里面有所有无意义的数据.
我希望img中的0在imgtemp为1,在img中为1在imgtemp为0.如何将bitwise_not应用于双Mat矩阵?
谢谢

最佳答案
我不能理解按位而不是双(浮点)值:你将在指数上进行按位运算(见here).所有位都将被反转,从0到1,反之亦然.
function documentation还有关于这方面的说明.

In case of a floating-point input array, its machine-specific bit
representation (usually IEEE754-compliant) is used for the operation.

如果你想让零成为一个,反之如你所说,你可以这样做:

cv::threshold(warpmask, warpmaskTemp,0.5,1.0,THRESH_BINARY_INV)

(见documentation)(是的,你可以使用相同的矩阵作为输入和目的地).

转载注明原文:cv :: Mat矩阵上的opencv – cv :: bitwise_not - 代码日志