python怎样在遍历点的坐标时把坐标存在数组里?
时间: 2023-03-26 15:03:12 浏览: 91
可以使用列表来存储坐标,例如:
```
points = [(1, 2), (3, 4), (5, 6)]
```
其中每个元素都是一个包含两个数字的元组,表示一个点的坐标。可以使用 for 循环遍历点的坐标,并将它们添加到列表中:
```
points = []
for x in range(10):
for y in range(10):
points.append((x, y))
```
这样就可以得到一个包含 100 个点的列表,每个点的坐标都存储在一个元组中。
相关问题
在python中,怎样把二值图的轮廓点每一百个取一个样点,把样点坐标存在数组中呢...
你可以使用 `cv2.findContours()` 函数来获取二值图的轮廓,然后使用简单的循环和条件语句来筛选出每个轮廓中的每一百个点,最后存储到数组中。下面是一个示例代码:
```python
import cv2
import numpy as np
img = cv2.imread('binary_image.png', 0)
contours, hierarchy = cv2.findContours(img, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
contour_points = []
for contour in contours:
for i, point in enumerate(contour):
if i % 100 == 0:
x, y = point[0]
contour_points.append((x, y))
```
在这个示例中,我们使用 `cv2.imread()` 函数读入二值图像,并使用 `cv2.findContours()` 函数获取轮廓和层级信息。然后,我们循环遍历每个轮廓中的每个点,检查其索引是否是 100 的整数倍。如果是,我们将该点的坐标添加到 `contour_points` 数组中。
请注意,我们假设每个轮廓都是封闭的,因此最后的样点数组中将包含轮廓的起点和终点。如果你想要去掉这些点,只需添加一个简单的条件判断即可。
图片遍历所有点,把直角坐标转化为极坐标
好的,你需要使用以下公式将直角坐标(x,y)转换为极坐标(r,θ):
r = sqrt(x^2 + y^2)
θ = atan(y/x)
其中,sqrt表示平方根,atan表示反正切函数。需要注意的是,atan函数的取值范围为[-π/2, π/2],因此需要根据x和y的符号来判断θ的值。具体来说,当x>0时,atan(y/x)的值为第一或第四象限的角度;当x<0时,atan(y/x)的值为第二或第三象限的角度;当x=0时,需要根据y的符号来确定θ的值。
接下来,你可以使用循环遍历图片中的每个像素点,将其坐标转换为极坐标,并在极坐标系中绘制出来。代码示例如下:
```python
import numpy as np
import cv2
# 读取图片
img = cv2.imread('image.jpg')
# 获取图片尺寸
height, width = img.shape[:2]
# 极坐标系中心点
center = (width//2, height//2)
# 遍历所有像素点
for x in range(width):
for y in range(height):
# 计算直角坐标到极坐标的转换
r = np.sqrt((x-center[0])**2 + (y-center[1])**2)
theta = np.arctan2(y-center[1], x-center[0])
# 将极坐标转化为整数值
r = int(r)
theta = int(np.round(np.degrees(theta)))
# 在极坐标系中绘制点
cv2.circle(img, center, r, (0, 255, 0), 1)
# 显示图片
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
这段代码中,使用了OpenCV库读取和显示图片,使用numpy库计算极坐标,使用cv2.circle函数在极坐标系中绘制点。你可以根据需要调整极坐标系的中心点和绘制点的颜色、大小等参数。