Python: найти количество черных пикселей в изображениях

#opencv #pixel #threshold

#opencv #пиксель #пороговое значение

Вопрос:

У меня есть видеофайл для обработки изображений. В видео я захватил образцы с точными временными интервалами, как показано на рисунке, пороговыми значениями с использованием OpenCV. Теперь я хочу найти различия в количестве черных пикселей, чтобы получить представление о времени в зависимости от разницы. Как я могу найти количество черных пикселей в каждом изображении в Python?

https://i.stack.imgur.com/Nfgrb.png
(Щелкните изображение, чтобы увеличить)

Ответ №1:

OpenCV не предлагает функцию прямого подсчета черных пикселей, но функцию для подсчета всех пикселей, которые не являются черными: cv2.countNonZero(img)

Поскольку вы не опубликовали свой код, вот пример того, как вы могли бы это использовать:

 # get all non black Pixels
cntNotBlack = cv2.countNonZero(img)

# get pixel count of image
height, width, channels = img.shape
cntPixels = height*width

# compute all black pixels
cntBlack = cntPixels - cntNotBlack
  

Обратите внимание, что при этом будет найден только чистый черный пиксель (что означает, что все каналы равны нулю).

Комментарии:

1. Не могли бы вы просто инвертировать изображение, а затем использовать этот метод?

2. Нет, если вы сначала инвертируете изображение, а затем используете countNonZero , вы получите все пиксели, кроме полностью белых пикселей (поскольку белый теперь является новым черным / нулевым).

3. Верно, я предположил, что изображение полностью двоичное. Неважно.

4. Для полного двоичного изображения это будет работать точно так, как вы описали 🙂