简单理解opencv中的坐标系,x,y,h,w

在查阅opencv有关的技术文章时,经常能够看到如下风格的函数头:

cv2.rectangle(frame, (x_min, y_min), (x_max, y_max), color, 2)

那么这里的x究竟是指图像从左往右数,还是从上往下数呢?

这里直接给出结论:在图片img上画矩形,坐标原点是图片左上角,向右为x轴正方向,向下为y轴正方向:

简单理解opencv中的坐标系,x,y,h,w_第1张图片


上面介绍的是x,y的概念。那么height,width又是什么情况呢?考虑如下代码:

import numpy as np
import cv2

img = np.zeros([100, 500])
cv2.imshow("img", img)
cv2.waitKey()
cv2.destroyAllWindows() 

其创建的为高100,宽500的图像(100行,500列的像素矩阵)。因此,以下代码:

img[50, 250]

访问的是第50行,第250列的像素,即opencv坐标系中的(x = 250, y = 50)。

仔细思考容易发现,二维矩阵的第50行在opencv坐标系中对应的是y=50,而非x=50。


总结,使用cv2中的有关函数时,里面的x,y按照上面说的坐标轴来算;而如果自己手工直接访问图像numpy数组,那么此时的顺序与opencv中的xy顺序是对调的,需要按照矩阵原生的行列规则来。

你可能感兴趣的:(杂文,划水)