在查阅opencv有关的技术文章时,经常能够看到如下风格的函数头:
cv2.rectangle(frame, (x_min, y_min), (x_max, y_max), color, 2)
那么这里的x究竟是指图像从左往右数,还是从上往下数呢?
这里直接给出结论:在图片img上画矩形,坐标原点是图片左上角,向右为x轴正方向,向下为y轴正方向:
上面介绍的是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。文章来源:https://www.toymoban.com/news/detail-514510.html
总结,使用cv2中的有关函数时,里面的x,y按照上面说的坐标轴来算;而如果自己手工直接访问图像numpy数组,那么此时的顺序与opencv中的xy顺序是对调的,需要按照矩阵原生的行列规则来。文章来源地址https://www.toymoban.com/news/detail-514510.html
到了这里,关于简单理解opencv中的坐标系,x,y,h,w的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!