Я работаю с небольшой программой, которая будет использовать вычитание фона OpenCV + python для подсчета автомобилей. Я в порядке с вычитанием фона, у меня уже есть фоновое изображение. Но когда я использую cv2.findContours(fgmask.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
, у меня слишком много контуров. Хотя я могу сделать базовую фильтрацию, проверив область контура (cv2.contourArea(contour)
), как показано в http://www.pyimagesearch.com/2015/05/25/basic-motion-detection-and-tracking-with-python-and-opencv/, не все автомобили обнаружены.OpenCV Python: cv2.findContours Возвращает ко многим контурам
Я также посмотрел cv2.groupRectangles(rectList, minNum[, eps])
, но я не могу создать вектор прямоугольников (кстати, это http://docs.opencv.org/2.4/modules/objdetect/doc/cascade_classification.html, последняя функция).
Мой код, чтобы найти контуры/рисования прямоугольников:
contours, im2 = cv2.findContours(fgmask.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
for cnt in contours:
if MAXAREA >= cv2.contourArea(cnt) >= MINAREA:
rect = cv2.minAreaRect(cnt)
points = cv2.cv.BoxPoints(rect)
cv2.rectangle(img, (int(points[1][0]), int(points[1][1])), (int(points[3][0]), int(points[3][1])), (0, 255, 0), 2)
(MINAREA
и MAXAREA
максимальные и минимальные площади для контура, который можно сделать)
Мой вопрос: Как я могу либо групповые прямоугольники или использовать некоторые критерии для рисования правильных прямоугольников (и чтобы автомобили не были распознаны)?
Любая помощь очень ценится.
несколько примеров изображений помогут – Miki
@Miki [background image] (https://drive.google.com/file/d/0B7zZpun7melFOFdTZU5adkNNOE0/view?usp=sharing) и [тестовый кадр] (https: // диск .google.com/файл/d/0B7zZpun7melFUWdMUGxYVzVMenc/вид? УСП = обмен) – DCPY
пост fgmask пожалуйста – Micka