2016-05-28 6 views
0

Я занимаюсь обработкой изображений, и у меня есть черная фигура на белом изображении. Чтобы правильно использовать findContours(), мне нужна белая фигура на черном изображении.Обработка изображений с помощью openCV, изменение цвета

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

Вы можете просто попробовать использовать ':: резюме bitwise_not' инвертировать изображение. – ZdaR

+0

Спасибо, вот что я искал :) –

+0

Или просто напишите 'image = 255 - image', если у вас 8-битное изображение. – Sunreef

ответ

0

Начиная с binary_image типа CV_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, ...); 
    
Смежные вопросы