mac importar python opencv

python - importar - opencv mac



OpenCV: ¿Invertir una máscara? (4)

Creo que algo como esto podría manejar el caso donde la máscara de entrada puede tener varios valores distintos de cero:

cv::Mat1b inputMask = ....; cv::Mat1b invertedMask(inputMask.rows, inputMask.cols); std::transform( inputMask.begin(), inputMask.end(), invertedMask.begin(), std::logical_not<uint8_t>() );

¿Hay una manera simple de invertir una máscara usando OpenCV? Por ejemplo, si tengo una máscara como esta:

010 111 010

Me gustaría invertirlo y obtener esto:

101 000 101

Nota: Estoy usando los enlaces de Python de OpenCV, así que si bien sería posible hacer un bucle sobre cada elemento de la máscara, la velocidad de ejecución podría convertirse en un problema.


Para una máscara de 8 bits que usa 255 como valor "on":

mask = cv::Mat::ones(mask.size(), mask.type()) * 255 - mask;

Estoy usando esta en lugar de la solución Matt M ya que todavía estoy usando OpenCV 2.1.0 para uno de mis proyectos.


Si tiene una máscara de 8 bits, entonces debe hacer mask = 255 - mask . cv :: El operador de resta Mat está sobrecargado para hacer una resta escalar por elemento.


cv2.bitwise_not(mask) ayudaría aquí