如何使用OpenCV Python计算图像中物体的长宽比?
物体的长宽比是指物体的边框的宽度和高度之比。因此,要计算长宽比,我们首先必须找到物体的边框。可以使用 cv2.boundingRect() 函数找到物体的边框。
该函数接受物体的轮廓点,并返回边框的左上角坐标(x,y)以及 宽度和高度 。我们使用 宽度 和 高度 来计算长宽比。
语法
在此” cnt “是图像中物体轮廓点的numpy数组。
步骤
可以按以下步骤计算图像中物体的长宽比 –
导入所需的库。在以下所有Python示例中,所需的Python库是 OpenCV 。请确保您已安装它。
使用 cv2.imread() 读取输入图像并将其转换为灰度图像。
在灰度图像上应用阈值,以创建二进制图像。调整第二个参数以更好地检测轮廓。
使用 cv2.findContours() 函数在图像中查找轮廓。
选择轮廓 cnt 或遍历所有轮廓。使用物体的边框的宽度和高度计算长宽比。
可选地,在输入图像上绘制轮廓和边框。还可以将长宽比作为文本放在图像上。
打印长宽比并显示带有绘制的轮廓和边框的图像。
让我们看一些示例,以更清晰地理解。
示例1
在此Python程序中,我们计算图像中物体的长宽比。我们在图像上绘制物体的轮廓和边框。我们还将长宽比作为物体的文本呈现。
我们将使用以下图像作为此程序的 输入文件 −
输出结果
当我们执行上述代码时,它将产生以下输出结果
然后,我们将得到以下输出窗口−
等高线用绿色绘制,边界矩形用蓝色绘制。检测到的对象的宽高比以白色显示。
样例2
在这个Python程序中,我们计算图像中所有对象的宽高比。我们在图片上绘制所有的等高线和边界矩形。我们也将所有对象的宽高比作为文本输出。
在本程序中,我们将使用以下图像作为 输入文件 ──
输出
执行以上代码,将输出以下 结果 ──
然后我们在输出窗口中得到了以下结果 输出窗口
轮廓用绿色画出,边界矩形用蓝色画出。检测到的对象的宽高比以红色显示。