opencv输出轮廓中的数据
时间: 2024-02-17 20:19:29 浏览: 63
要输出每个轮廓的数据,您可以使用轮廓列表`contours`中的每个轮廓的相关信息。每个轮廓都是一个包含点坐标的numpy数组。
下面是一个示例代码,演示如何输出每个轮廓的数据:
```python
import cv2
# 读取图像
image = cv2.imread('image.jpg')
# 转换为灰度图像
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 二值化处理
ret, threshold = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
# 查找轮廓
contours, hierarchy = cv2.findContours(threshold, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# 输出每个轮廓的数据
for contour in contours:
# 输出轮廓的点坐标
print("轮廓坐标:", contour)
# 输出轮廓的点数
print("轮廓点数:", len(contour))
# 输出轮廓的面积
area = cv2.contourArea(contour)
print("轮廓面积:", area)
# 输出轮廓的外接矩形
x, y, width, height = cv2.boundingRect(contour)
print("外接矩形坐标:", x, y, width, height)
# 输出轮廓的最小外接矩形
rect = cv2.minAreaRect(contour)
box = cv2.boxPoints(rect)
box = np.int0(box)
print("最小外接矩形坐标:", box)
# 输出轮廓的凸包
hull = cv2.convexHull(contour)
print("凸包坐标:", hull)
# 输出轮廓的近似多边形
epsilon = 0.02 * cv2.arcLength(contour, True)
approx = cv2.approxPolyDP(contour, epsilon, True)
print("近似多边形坐标:", approx)
# 输出轮廓的形状特征
(x, y), radius = cv2.minEnclosingCircle(contour)
center = (int(x), int(y))
radius = int(radius)
print("最小外接圆心坐标:", center)
print("最小外接圆半径:", radius)
print("------------------")
```
在上述代码中,我们使用一个循环遍历每个轮廓,并输出相关信息。例如,我们输出了轮廓的点坐标、点数、面积、外接矩形、最小外接矩形、凸包、近似多边形和最小外接圆的信息。您可以根据需要选择输出的信息。
阅读全文