Opencv座標系X Y行列寬高之間的關係

2021-09-13 22:03:30 字數 1537 閱讀 6285

這是因為在計算機中,影象是以矩陣的形式儲存的。

一張寬度640畫素、長度480畫素的灰度圖儲存在乙個480 * 640的矩陣中。

先行後列。

而我們習慣的座標表示是先x橫座標,再y縱座標。在opencv中需要對矩陣進行計算,先行再列。

這種**的錯誤需要細心。

#include

using

namespace cv;

int main()

這裡

template

inline

rect_<_tp>::rect_(_tp _x, _tp _y, _tp _width, _tp _height)

: x(_x), y(_y), width(_width), height(_height) {}

rect的建構函式給定的x,y座標即為矩形的左上角座標。

設定為(0,100),效果如下。

這裡是直接從源影象中截取出片區域,選取的是乙個從0行,200列座標點開始的一片寬 x 高的區域。

座標體系中的零點座標為的左上角,x軸為影象矩形的上面那條水平線;y軸為影象矩形左邊的那條垂直線。該座標體系在諸如結構體mat,rect,point中都是適用的。(雖然網上有學著說opencv中有些資料結構的座標原點是在的左下角,但是我暫時還沒碰到過)。

在使用image.at(x1, x2)來訪問影象中點的值的時候,x1並不是中對應點的x軸座標,而是中對應點的y座標。因此其訪問的結果其實是訪問image影象中的point(x2, x1)點,即與image.at(point(x2, x1))效果相同。

如果所畫圖像是多通道的,比如說image影象的通道數時n,則使用mat::at(x, y)時,其x的範圍依舊是0到image的height,而y的取值範圍則是0到image的width乘以n,因為這個時候是有n個通道,所以每個畫素需要占有n列。但是如果在同樣的情況下,使用mat::at(point)來訪問的話,則這時候可以不用考慮通道的個數,因為你要賦值給獲取mat::at(point)的值時,都不是乙個數字,而是乙個對應的n維向量。

經緯高座標系 ECEF座標係 ENU座標系

無人機搭載的rtk獲得的經緯高座標要轉換為東北天座標,才能用於區域性的導航和定位。為了這個目的,查閱資料,越查越懵逼,竟然這麼多的座標系,略懂之後,將學到的資訊記錄如下,很多跟我的目的 rtk的lbh座標轉換為東北天座標 有點遠,但是把周邊知識搞的清楚了,還是有意義的。所以記錄在下,最終的經緯高座標...

xy座標正負方向 笛卡爾座標系

壹 笛卡爾座標系 cartesian coordinates 就是直角座標系和斜座標系的統稱。相交於原點的兩條數軸,構成了平面放射座標系。如兩條數軸上的度量單位相等,則稱此放射座標係為笛卡爾座標系。兩條數軸互相垂直的笛卡爾座標系,稱為笛卡爾直角座標系,否則稱為笛卡爾斜角座標系。貳 兩個座標軸的相交點...

OpenCV區域性座標系和世界座標系轉換

本文實現區域性座標系和世界座標系的轉換。假設機器在p1處在世界座標系下的位姿為 x,y,z,1,1,0,0 p1 和p2之間的轉換 區域性座標系 為t12表示為 1,1,0,45 求p2處世界座標系下的位姿 x,y,z,結果為 2,2,0,45 程式如下 include includeusing n...