#python #image #opencv #object #camera
Вопрос:
Я хочу извлечь общее количество объектов и их размер на основе OpenCV и Python. Я предполагаю, что крошечные объекты неравномерно перемещаются по конвейерной ленте. Поскольку размер объектов важен для меня, я решаю использовать камеру линейного сканирования для хранения изображений.
Камеры линейного сканирования обычно хранят полученные данные в виде последовательных изображений, каждое из которых содержит определенное количество отсканированных строк.
Проблема:
Я могу извлекать объекты, которые полностью находятся на изображении, и вычислять их размер. Моя главная проблема заключается в извлечении количества и размера объектов, которые находятся на полях/границах двух последовательных изображений.
Вот пример последовательных изображений (изображение n и изображение n 1). Красные линии показывают поля/границы последовательных изображений.
Каково решение этой проблемы? Можете ли вы предложить методы решения этой проблемы?
с уважением,
Мохаммад
Ответ №1:
Чтобы проанализировать страницу n, сначала объедините страницы n-1, n, n 1 и обнаружьте все объекты в этом 3-страничном изображении. Алгоритм обнаружения может не сработать для объектов на верхнем и нижнем крае, но объекты, относящиеся к странице n, должны быть обнаружены нормально. Для каждого объекта определите положение y на 3-страничном изображении (например, наименьший пиксель y объекта или центр масс объекта). Все объекты, занимающие положение y между 1/3 и 2/3 страницы, принадлежат странице n (при условии, что каждая страница имеет одинаковую высоту). Теперь сделайте то же самое для следующей страницы.
Обратите внимание, что этот подход анализирует каждую страницу 3 раза. Вы можете попытаться уменьшить накладные расходы, как только это заработает. Например, если вы знаете, что объекты всегда короче 100 пикселей, вы можете ограничить объединение нижними 100 пикселями страницы n-1 и верхними 100 пикселями страницы n 1.
Комментарии:
1. Сначала я поблагодарю вас за вашу идею и помощь. Я разработал свой код на основе вашего предложения, и он отлично работает. Как вы уже упоминали, этот подход анализирует каждую страницу 3 раза. Для снижения накладных расходов существует ли какой-либо метод поиска неполных объектов, которые находятся на верхнем поле/границе страницы n? Если да, то сначала мы найдем полные объекты страницы n. Затем мы находим и сохраняем верхнюю часть страницы n (t_p_p_n), которая включает неполные объекты. Наконец, мы объединяем эту часть (t_p_p_n) и страницу n 1, чтобы найти полные объекты. Я думаю, что такой подход может снизить накладные расходы.