LINUX.ORG.RU

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

 ,


0

1

Разбираю пример кода, хочу его изменить чтобы искать красные источники света, с open cv опыта нет. Помогите пожалуйста куда вписать дополнительный фильтр цвета, если это возможно.

import numpy as np
import argparse
import cv2
import imutils
from imutils import contours
import skimage
from skimage import measure
import argparse

image = cv2.imread("2.jpg")

gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
blurred = cv2.GaussianBlur(gray, (11, 11), 0)
thresh = cv2.threshold(blurred, 200, 255, cv2.THRESH_BINARY)[1]
thresh = cv2.erode(thresh, None, iterations=2)
thresh = cv2.dilate(thresh, None, iterations=4)

labels = measure.label(thresh, connectivity=1, background=0)
mask = np.zeros(thresh.shape, dtype="uint8")

for label in np.unique(labels):

	if label == 0:
		continue

	labelMask = np.zeros(thresh.shape, dtype="uint8")
	labelMask[labels == label] = 255
	numPixels = cv2.countNonZero(labelMask)

	if numPixels > 300:
		mask = cv2.add(mask, labelMask)

cnts = cv2.findContours(mask.copy(), cv2.RETR_EXTERNAL,
	cv2.CHAIN_APPROX_SIMPLE)
cnts = imutils.grab_contours(cnts)
cnts = contours.sort_contours(cnts)[0]

for (i, c) in enumerate(cnts):

	(x, y, w, h) = cv2.boundingRect(c)
	((cX, cY), radius) = cv2.minEnclosingCircle(c)
	cv2.circle(image, (int(cX), int(cY)), int(radius),
		(0, 0, 255), 3)
	cv2.putText(image, "#{}".format(i + 1), (x, y - 15),
		cv2.FONT_HERSHEY_SIMPLEX, 0.45, (0, 0, 255), 2)

cv2.imshow("Image", image)
cv2.waitKey(0)

Огромное спасибо админу и учасникам форума!

Перемещено xaizek из general

Не думаю что opencv - хорошее решение в питоне для данной задаче (для C++ и C отличные, не спорю, да и с производительностью всё нормально). Второй момент - тебе надо красные глаза фиксить, а цветы на клумбе или футболку фиксить не надо, так что задача требует поиск глаз на фото и уже на них фиксить красные глаза, а это нейроночки и машинное обучение. Да, opencv умеет искать лица и глаза, но ЕМНИП когда я смотрел это работало не очень хорошо, лицо должно быть повёрнуто правильно и не быть лицом негра, а то как-то плохо определялось. Короче для начала бери книжку и гугл и штудируй идеи там, а уже потом пили свои алгоритмы, ну или бери готовые и не изобретай велосипеды.

ЗЫ

Можешь от профессионалов почитать выжимку, чтобы представить себе проблемы

https://dev.by/news/kak-my-razrabotali-unikalnyj-algoritm-udaleniya-ehffekta-...

Они работали, а не тыкались судя по тому что пишут.

peregrine ★★★★★ ()
Последнее исправление: peregrine (всего исправлений: 2)

Слуш, раз ты на питоне это пишешь, а не на плюсах, зачем именно opencv? Сейчас же есть всякие pytorch и прочие ML движки для питона, которые хорошо зарекомендовали себя в распознавании объектов на картинках. ИМХО ты изначально не в том направлении идешь.

Aswed ★★★★★ ()
Ответ на: комментарий от pawnhearts

Противопоставление в том, что не нужно возиться с сырым opencv самостоятельно, когда взять можно готовое ml решение. ТС хочет использовать opencv как раз для распознавания, а не преобразования

Aswed ★★★★★ ()