@maryaTurova

Как заменить цвет пикселей cv2?

nparr = np.frombuffer(base64.b64decode(base64_data), np.uint8)
bgr = cv2.imdecode(nparr, cv2.IMREAD_GRAYSCALE)

im = ImageOps.grayscale(img)

colour = {}

#получаю словарь ("цвет":"кол-во")
for pixel in im.getdata():
	if pixel in colour:
		colour[pixel] += 1
	else:
		colour[pixel] = 1
		
if len(colour) > 2:
	#получаю 3 макс.значения в виде кортежа
	aux = sorted([(v,k) for (k,v) in colour.items()])
	res = [(v,k) for (k,v) in aux[-3:]]

[(197, 121), (13, 179), (0, 1936)]

Как в "bgr"с помощью cv2 заменить первое значение на последнее, т.е. пиксели с 197 заменить на пиксели 0 ?
  • Вопрос задан
  • 66 просмотров
Решения вопроса 1
Vindicar
@Vindicar
В cv2 изображения - это массивы numpy, так что все трюки с индексацией из numpy работают. Очень советую их изучить.
find = 1,2,3 # какие значения заменять
replace = 4,5,6 # на какие значения заменять
mask = (bgr == find)[..., 0]
bgr[mask] = replace
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы