cv2.findContours()函数接受的参数为二值图,即黑白的(不是灰度图), # cv2.RETR_EXTERNAL只检测外轮廓(内没用,我需要得到他的外接矩形), # cv2.CHAIN_APPROX_SIMPLE只保留终点坐标 # 返回的list中每个元素都是图像中的一个轮廓(其他的不要) refCnts, hierarchy = cv2.findContours(ref, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) # 只检测外轮廓,保留坐标点
时间: 2024-04-15 17:31:08 浏览: 124
PHP语言基础知识详解及常见功能应用.docx
`cv2.findContours()`函数用于在二值图像中查找轮廓。它接受三个参数:输入图像、轮廓检索模式和轮廓近似方法。
- 输入图像应为二值图像,即只有黑色和白色两种颜色。
- 轮廓检索模式决定了要提取的轮廓类型。在这里,我们使用`cv2.RETR_EXTERNAL`,它只检测外部轮廓,而不考虑内部轮廓。
- 轮廓近似方法决定了如何存储轮廓的坐标点。在这里,我们使用`cv2.CHAIN_APPROX_SIMPLE`,它只保留终点坐标,以节省内存。
函数返回一个包含轮廓的列表`refCnts`和一个包含轮廓之间关系的层次结构`hierarchy`。在这里,我们只关心外部轮廓,所以只使用了`refCnts`。列表中的每个元素都是图像中的一个轮廓,可以通过遍历列表来获取每个轮廓。
根据你的代码示例,`ref`是一个二值图像,您希望得到每个轮廓的外接矩形。可以通过使用`cv2.boundingRect()`函数来计算每个轮廓的外接矩形。例如:
```python
for contour in refCnts:
x, y, w, h = cv2.boundingRect(contour)
# 在图像上绘制外接矩形
cv2.rectangle(ref, (x, y), (x+w, y+h), (0, 255, 0), 2)
```
这样,您可以在原始图像上绘制出每个轮廓的外接矩形。
阅读全文