opencv轮廓检测可以选择指定多个轮廓吗,且返回各个轮廓的中心坐标
时间: 2024-10-24 15:14:22 浏览: 40
OpenCV中的轮廓检测(Contour Detection)确实可以同时处理多个对象,并且能提供每个轮廓的相关信息,包括中心坐标、边界框等。当你运行`findContours()`函数后,它会返回一个轮廓数组,每个轮廓是一个由一系列点组成的列表。你可以通过遍历这个数组,获取每个轮廓的具体信息。
例如,对于每个轮廓,你可以找到它的包围矩形,矩形的中心就是轮廓的一个估计中心。以下是如何操作的一般步骤:
```python
contours, _ = cv2.findContours(image, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
for contour in contours:
x, y, w, h = cv2.boundingRect(contour) # 获取轮廓的边界矩形
center = (x + w//2, y + h//2) # 计算矩形中心,即轮廓的中心点
print(f"轮廓中心: {center}")
```
在这里,`image`是输入的图像,`cv2.RETR_EXTERNAL`表示只返回外层轮廓,`cv2.CHAIN_APPROX_SIMPLE`用于压缩轮廓点,减少内存消耗。`boundingRect()`函数用于获取轮廓的最小矩形包围盒,`center`就是该矩形的中心坐标。
阅读全文