#opencv #pixel #threshold
#opencv #пиксель #пороговое значение
Вопрос:
У меня есть видеофайл для обработки изображений. В видео я захватил образцы с точными временными интервалами, как показано на рисунке, пороговыми значениями с использованием OpenCV. Теперь я хочу найти различия в количестве черных пикселей, чтобы получить представление о времени в зависимости от разницы. Как я могу найти количество черных пикселей в каждом изображении в Python?
Ответ №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. Для полного двоичного изображения это будет работать точно так, как вы описали 🙂