cv::bitwise_not 位于 cv::Mat 矩阵上

bat*_*man 4 opencv

我尝试将 cv::bitwise_not 转换为双值的 cv::Mat 矩阵。我申请了像

cv::bitwise_not(img, imgtemp);
Run Code Online (Sandbox Code Playgroud)

imgCV_64F0和1的数据。但是imgtemp里面全是无意义的数据。我期望 0 inimg为 1 at imgtemp,1 inimg为 0 at imgtemp。如何将 bitwise_not 应用于双 Mat 矩阵?谢谢

Ant*_*nio 5

我无法理解按位而不是双精度(浮点)值:您还将对指数进行按位运算(请参阅此处)。所有位都将被反转,从 0 变为 1,反之亦然。函数文档中也有这方面的注释。

如果是浮点输入数组,则使用其特定于机器的位表示形式(通常符合 IEEE754 标准)进行操作。

如果您希望零变为一,反之亦然,正如所建议的,您可以这样做:

cv::threshold(warpmask, warpmaskTemp,0.5,1.0,THRESH_BINARY_INV)
Run Code Online (Sandbox Code Playgroud)

(请参阅文档)(是的,您可以使用相同的矩阵作为输入和目标)。