Я создаю инструмент для анализа изображений (используя Python). У меня уже есть сегментированные изображения, полученные из порога Otsu. Используя функцию OpenCv kmeans, я уменьшил количество цветов на моем изображении до 4. Предполагается, что одним из кластеров K-средних является черный фон (значения BGR [0,0,0]).Сгладить изображение с использованием OpenCV/Numpy
Из-за алгоритма K-средних фоновые пиксели теперь не [0,0,0], но отображают значения пикселей, например. [0,2,1].
Я хочу, чтобы этот фоновый кластер был абсолютно черным снова. Изображение представлено как массив 3D numpy. В настоящее время я просто итеративно корректирую фон:
X, Y, Z = img.shape
for xi in xrange(X):
for yi in xrange(Y):
if all([value < 10 for value in img[xi][yi]]):
img[xi][yi] = np.zeros((1,3), dtype=int)
Это относительно медленная операция. Есть ли более разумные пути для этого, возможно, используя специализированные функции OpenCV/Numpy?
Это был хороший ответ и привел меня к решению в 2 строках вместо 10. Хорошая работа! – Sander