Я хочу улучшить свой проект, который предназначен для обнаружения объектов.
Во-первых, чтобы получить фактический результат, я использую absdiff
, а затем я использую следующие операции в моем коде ниже:
cv::threshold(subtractionResultEdges, threshold, 0, 255, CV_THRESH_BINARY | CV_THRESH_OTSU);
Sobel(threshold, sobel, CV_32F, 1, 0);
minMaxLoc(sobel, &minVal, &maxVal);
sobel.convertTo(sobel, CV_8U, 255.0 / (maxVal - minVal), -minVal * 255.0 / (maxVal - minVal));
dilate(subtractionResultEdges, subtractionResultEdges, verticalStructreMat, Point(-1, -1));
erode(subtractionResultEdges, filteredResult, verticalStructreMat, Point(-1, -1));
Canny(filteredResult, filteredResult, 33, 100, 3);
Моя последняя операция findContours(canny_output, *contours, *hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, Point(0, 0));
Это мой результат после использования каждой функции и переднего плана, который я получаю с помощью функции accumulate
(20 кадров):
передний план: http://j71i.imgup.net/foregroundc3dc.PNG
вычитание: http://p81i.imgup.net/subtractio2866.PNG
Собел: http://g51i.imgup.net/sobela1fb.PNG
порог: http://p46i.imgup.net/treshold14c9.PNG
расширять, разрушать и Канни:
http://q68i.imgup.net/canny2e1a.PNG
найтиКонтуры: http://v76i.imgup.net/contours6845.PNG
Фон также получается из функции accumulate
.
Не могли бы вы помочь мне улучшить определение углов или контуров? Мне это нужно, чтобы получить размер объекта в пикселях.
Заранее спасибо!
boundingRect
, так как, на мой взгляд, слишком велика ошибка обнаружения. - person B.Kosmowski   schedule 09.12.2015