[具身智能-237]:OpenCV - 图像的坐标轴
OpenCV 的图像坐标系与我们在数学课上学到的标准笛卡尔坐标系有显著不同这是初学者最容易混淆的地方。简单来说它的核心规则是原点在左上角X 轴向右Y 轴向下。下面为你详细拆解这个坐标系的构成以及在不同场景下的使用方式。️ 核心坐标系像素坐标系这是你在 OpenCV 中进行图像操作时最常接触的坐标系。原点 (0, 0)位于图像的左上角。X 轴水平方向向右为正方向。Y 轴垂直方向向下为正方向。单位像素pixel。你可以把它想象成一个表格或矩阵与多维数组的下标一致行号从上到下递增对应 Y 轴列号从左到右递增对应 X 轴。易混淆点坐标(x, y)vs 数组索引[y, x]这是 OpenCV尤其是 Python 接口中最大的“坑”。你需要分清几何坐标和数组索引的区别。几何坐标(x, y)这是我们在调用绘图函数时使用的格式。x代表水平位置列y代表垂直位置行。例如cv2.circle(img, (50, 100), ...)表示在 x50, y100 的位置画圆。数组索引[y, x]这是我们在直接访问图像数据NumPy 数组时使用的格式。OpenCV 图像是一个(高度, 宽度, 通道)的矩阵访问顺序是“先行行号代表高度Y后列列号代表长度X”。例如img[100, 50]访问的是第 100 行、第 50 列的像素对应的几何坐标正是(x50, y100)。一句话总结绘图用(x, y)取数用[y, x]。这是由像素在内存中存储的格式决定的 其他坐标系除了像素坐标系在相机标定、3D 重建等高级应用中你还会遇到以下两种坐标系坐标系名称原点位置单位说明图像物理坐标系图像中心主点毫米 (mm)用于描述像素在成像平面上的物理位置。相机坐标系相机光心毫米 (mm)三维坐标系用于描述物体相对于相机的空间位置。对于绝大多数图像处理任务你只需要掌握第一种像素坐标系即可。 代码示例下面这段代码清晰地展示了如何在这个坐标系中进行绘图和访问像素。pythonimport cv2 import numpy as np # 1. 创建一个 400x600 (高x宽) 的黑色图像 img np.zeros((400, 600, 3), dtypenp.uint8) # 2. 使用几何坐标 (x, y) 进行绘图 # 在 (x100, y50) 处画一个红色的圆 # 注意这里传入的是 (x, y) 元组 cv2.circle(img, (100, 50), 20, (0, 0, 255), -1) # 3. 使用数组索引 [y, x] 访问/修改像素 # 将 (x100, y50) 这个点的像素值设为蓝色 # 注意这里使用的是 [y, x] 索引 img[50, 100] [255, 0, 0] # 4. 获取图像尺寸 height, width img.shape[:2] # 高度对应 Y 轴宽度对应 X 轴 print(f图像尺寸{width}x{height}) cv2.imshow(Coordinate System, img) cv2.waitKey(0)
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2490715.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!