opencv获取轮廓点坐标
时间: 2023-08-24 17:41:20 浏览: 185
你可以使用OpenCV里面的findContours函数来获取轮廓点的坐标。以下是一个使用示例:
```python
import cv2
# 读取图像
img = cv2.imread('test.jpg')
# 转为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 二值化
ret, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
# 查找轮廓
contours, hierarchy = cv2.findContours(binary, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
# 遍历轮廓
for i in range(len(contours)):
cnt = contours[i]
# 获取轮廓点坐标
for j in range(len(cnt)):
x, y = cnt[j][0]
print("contour %d, point %d: (%d, %d)" % (i, j, x, y))
```
findContours函数返回两个值,第一个是轮廓点的坐标数组,第二个是层级关系数组。在遍历轮廓点坐标数组时,注意cnt[j][0]表示的是坐标点的数组,其中第一个元素是x坐标,第二个元素是y坐标。
相关问题
opencv轮廓提取坐标点
在 OpenCV 中,可以使用 findContours 函数来提取轮廓,并使用 drawContours 函数将轮廓绘制到图像上。可以使用以下代码来获取轮廓的坐标点:
```python
import cv2
# 读取图像
img = cv2.imread('image.jpg')
# 转换为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 二值化处理
ret, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
# 查找轮廓
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
# 绘制轮廓
cv2.drawContours(img, contours, -1, (0, 0, 255), 2)
# 获取轮廓坐标点
for contour in contours:
for point in contour:
x, y = point[0]
print(x, y)
```
其中,findContours 函数的第一个参数是二值化图像,第二个参数是轮廓查找方式,第三个参数是轮廓近似方法。返回值 contours 是一个包含所有轮廓的列表,每个轮廓都是一个包含坐标点的数组。可以使用双重循环来遍历所有轮廓的所有坐标点,并输出坐标值。
opencv轮廓中心点坐标
要获取轮廓的中心点坐标,可以使用OpenCV中的函数`cv2.moments()`来计算轮廓的矩,然后根据矩的计算公式可以求出轮廓的中心点坐标。
以下是一个示例代码,假设`contours`为轮廓列表:
```
import cv2
for contour in contours:
M = cv2.moments(contour)
cx = int(M['m10'] / M['m00'])
cy = int(M['m01'] / M['m00'])
print('Center point of contour:', cx, cy)
```
在上述代码中,`cv2.moments()`函数返回的是一个字典类型,包含了轮廓的各种矩信息,其中`m00`是零阶矩,表示轮廓的面积,`m10`和`m01`分别是一阶矩,表示轮廓的重心的横坐标和纵坐标,因此可以根据这三个矩计算出轮廓的中心点坐标。
阅读全文