首页 > 解决方案 > 如何使用 OpenCV 从线扫描相机中提取连续图像边界中的对象及其大小?

问题描述

我想基于OpenCVPython提取对象的总数及其大小。我假设微小的物体在传送带上不规则地移动。由于对象大小对我来说很重要,因此我决定使用线扫描相机来存储图像。

线扫描相机通常以连续图像的形式存储接收到的数据,每个图像具有一定数量的扫描线。

问题:

我可以提取完全在图像中的对象并计算它们的大小。我的主要问题是提取两个连续图像的边距/边框中的对象的数量和大小。

这是连续图像的示例图像 n图像 n+1)。红线显示连续图像的边距/边框

示例图像

克服这个问题的解决方案是什么?你能建议解决这个问题的方法吗?

此致,

穆罕默德

标签: pythonimageopencvobjectcamera

解决方案


要分析第 n 页,首先连接第 n-1、n、n+1 页并检测此 3 页图像中的所有对象。对于顶部和底部边缘的对象,检测算法可能会失败,但应该可以很好地检测到与第 n 页相关的对象。对于每个对象,确定 3 页图像中的 y 位置(例如对象的最低 y 像素,或对象的质心)。y 位置在页面 1/3 到 2/3 之间的所有对象都属于第 n 页(假设每个页面具有相同的高度)。现在对下一页做同样的事情。

请注意,此方法对每个页面进行 3 次分析。完成这项工作后,您可以尝试减少开销。例如,如果您知道对象总是小于 100 像素,则可以将连接限制为第 n-1 页的底部 100 个像素和第 n+1 页的顶部 100 个像素。


推荐阅读