這是因為在計算機中,影象是以矩陣的形式儲存的。
一張寬度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...