#python #opencv #image-processing #computer-vision #haar-classifier
#python #opencv #обработка изображений #компьютерное зрение #haar-классификатор
Вопрос:
Мне нужно определить основную (переднюю) машину на изображении, чтобы поместить ее в другое изображение без или с простым фоном. Ниже приведен пример изображения:
Я разрабатываю на Python 3 с OpenCV 4.
Я попробовал HaarCascade, но он работает плохо, даже со многими различными гиперпараметрами в detectMultiScale:
car_cascade = cv2.CascadeClassifier('./haarcascade/haarcascade_car.xml')
car_detected = car_cascade.detectMultiScale(img_gray1, 2.2, 4)
cars_with_detections = np.copy(img1)
for (x, y, w, h) in car_detected:
cv2.rectangle(cars_with_detections, (x, y), (x w, y h), (255, 0, 0), 5)
plt.figure(figsize=(25,15))
plt.imshow(cars_with_detections)
Комментарии:
1. Вы уверены «haarcascade_car.xml » работает нормально?
Ответ №1:
Фон для этого изображения довольно сложно удалить (при сохранении формы автомобиля) из-за других красных автомобилей и разных объектов.
Я пробовал различные методы: размытие (фильтр Гаусса, фильтр бокса и т. Д.).
Если вам нужно сделать это только для одного изображения, а на другое изображение поместить только автомобиль, вам может повезти больше с помощью Photoshop и инструмента Magic Wand.
Тем не менее, я смог подобраться довольно близко с помощью простой обработки OpenCV с помощью экспериментов в программном обеспечении GRIP (графически представленная обработка изображений).
-
CV Subtract (вычитание «красного» цвета автомобиля, чтобы получить темную каплю для автомобиля)
(Красный)
-
Размытие (размытие порога HSV для получения более плотной маски)
-
Найти контуры (чтобы найти контур кузова автомобиля с помощью размытой маски)
-
Маска (примените маску к исходному изображению, чтобы просто получить пиксели автомобиля)
Я знаю, что мой код, возможно, не дал желаемого результата, но я надеюсь, что вы цените мои усилия и время, а также мои альтернативные решения.
Вот ссылка для загрузки GRIP
Вот ссылка для загрузки кода конвейера обработки изображений в виде файла Python и файла GRIP