Обработка изображений с openCV, изменение цвета

Я делаю некоторую обработку изображений, и у меня есть черная форма на белом изображении. Для findContours()правильного использования мне нужна белая фигура на черном изображении.

  1. Есть ли способ изменить настройки openCV для отслеживания черных фигур на белом фоне ?
  2. Мне удалось найти белую часть изображения, используя inrange()Я изменить его на какой-то другой цвет, затем изменить черную часть на белый, а затем снова первая часть на черный все использование inrange(). Но есть ли более простой способ преобразовать все черное в белое и белое в черное на изображении одновременно ?

1 ответ

  1. Начиная с типа a binary_imageCV_8UC1:

    1. Вы можете использовать binary_not(как предложено @ZdaR):

      binary_not(binary_image, binary_image);
      
    2. инвертировать значения с помощью операции aritmtetic (как предложено @Sunreef):

      binary_image = 255 - binary_image;
      
    3. или используйте не логический оператор ~.

      binary_image = ~binary_image;
      

      Это может быть хороший ярлык, если вам просто нужно инвертировать значения для определенной функции, например:

      findContours(~binary_image, ... );