如何使用OpenCV Python将椭圆适配到图像中的对象?
我们可以使用函数 cv2.fitEllipse() 来将椭圆适配到对象上。椭圆被镶嵌在一个旋转矩形内。旋转矩形是一个包含对象的最小区域边界矩形。
语法
此函数使用的语法是-
其中,“cnt”是轮廓点。它表示为一个轮廓点的数组。
输出 − 它以((x,y),(majorAxis,minorAxis),angle)格式返回元组的元组。 (x,y)是中心的坐标,(majorAxis,minorAxis)是轴的长度,angle是椭圆的旋转角度。
要在输入图像上绘制椭圆,我们使用以下函数-
步骤
您可以使用以下步骤将椭圆适配到对象上-
导入所需的库。在所有以下Python示例中,所需的Python库是 OpenCV 。请确保已经安装了它。
使用 cv2.imread() 读取输入图像并将其转换为灰度。这里我们加载一个名为 star1.png 的图像。
对灰度图像应用二值化,以创建二进制图像。根据需求调整第二个参数以获取更好的轮廓检测。
使用 cv2.findContours() 函数在图像中找到轮廓。
选择轮廓“ cnt ”或循环所有轮廓。使用“ cv2.fitEllipse(cnt) ”函数将椭圆适配到对象轮廓“ cnt ”上。
在输入图像上绘制椭圆。
显示带有绘制的凸包的图像。
让我们看一些示例,以获得更清晰的理解。
我们将以下图像作为 输入文件 用于下面的示例。
示例1
在下面的Python程序中,我们检测图像中对象的轮廓,并找到适合对象的椭圆。我们在输入图像上绘制了椭圆。
输出结果
当您执行上面的代码时,将产生以下输出 –
我们会得到以下输出窗口 –
用于适应检测到对象的椭圆以红色绘制出来。
让我们找到内含椭圆的旋转矩形。
示例 2
在此Python程序中,我们检测图像中物体的轮廓并找到适应该物体的椭圆。我们还找到内含椭圆的旋转矩形,并在输入图像上绘制了椭圆和旋转矩形。
输出
当我们执行上面的代码时,它将产生以下输出−
我们得到以下输出window −
椭圆用红色绘制,旋转矩形(最小面积)用黄色绘制。请注意,椭圆被画在旋转矩形内部。