OpenCV:反转面具?

Dav*_*ver 26 python opencv

有没有一种简单的方法来使用OpenCV反转掩码?例如,如果我有这样的面具:

010
111
010
Run Code Online (Sandbox Code Playgroud)

我想反转它并得到这个:

101
000
101
Run Code Online (Sandbox Code Playgroud)

注意:我正在使用OpenCV的Python绑定,因此虽然可以简单地循环遍历掩码中的每个元素,但执行速度可能会成为一个问题.

Rik*_*edi 33

cv2.bitwise_not(mask) 会有所帮助


Mat*_*tag 32

如果你有一个8位掩码,那么你应该这样做mask = 255 - mask.cv :: Mat减法运算符被重载以执行标量每元素减法.


And*_*tis 7

对于使用255作为"on"值的8位掩码:

mask = cv::Mat::ones(mask.size(), mask.type()) * 255 - mask;
Run Code Online (Sandbox Code Playgroud)

我正在使用这个而不是Matt M解决方案,因为我仍然在我的一个项目中使用OpenCV 2.1.0.