В настоящее время я использую OpenCV, чтобы попытаться обнаружить объекты на столе, покрытом черной тканью. Камера не всегда будет смотреть в одном направлении (это голова робота), но будет обрабатываться только одно изображение, поэтому скорость не является обязательной. Я использовал cv::Canny
а также cv::findContours
с наиболее подходящими параметрами, которые я мог найти, прежде чем удалять контуры, которые имеют слишком маленькую площадь. Это приближает меня к желаемому результату, но некоторые контуры, которые не находятся в области таблицы, явно обнаруживаются.
Что было бы хорошим способом отфильтровать их?
Я думал о трех решениях (которые могли бы быть объединены для лучших результатов):
cv::HoughLines
?).cv::Point
и последнее cv::Point
в контуре (который является vector<cv::Point>
) Работа ?Если у кого-то есть эффективный способ отфильтровать эти контуры или просто ввести и дать совет об одном из указанных выше методов фильтрации, это было бы просто замечательно. Также рука робота, которую вы видите в правом нижнем углу, не будет проблемой, потому что она будет вне поля зрения во время реального эксперимента.
Задача ещё не решена.
Других решений пока нет …