為什麼要定義Mat 類

2021-10-01 23:51:58 字數 904 閱讀 4425

內容摘自《opencv入門教程》

在讀取矩陣元素時,以及獲取矩陣某行的位址時,需要指定資料型別。這樣首先需要不停地寫,讓人感覺很繁瑣,在繁瑣和煩躁中容易犯錯。

如下面**中的錯誤,用at()獲取矩陣元素時錯誤的使用了double型別。這種錯誤不是語法錯誤,因此在編譯時編譯器不會提醒。

在程式執行時,at()函式獲取到的不是期望的(i,j)位置處的元素,資料已經越界,但是執行時也未必會報錯。這樣的錯誤使得你的程式忽而看上去正常,忽而彈出「段錯誤」,特別是在**規模很大時,難以查錯。

如果使用mat_類,那麼就可以在變數宣告時確定元素的型別, 訪問元素時不再需要指定元素型別,即使得**簡潔,又減少了出錯的可能性。

上面**可以用mat_實現,實現**如下面例程裡的第二個雙重for迴圈。

#include

#include

"opencv2/opencv.hpp"

#include

using namespace std;

using namespace cv;

intmain

(int argc,

char

* ar**)

}//在變數宣告時,指定矩陣元素型別

mat_ m1 =

(mat_

&)m;

for(

int i =

0; i < m1.rows;

++i)

}return0;

}

為什麼要定義Mat 類

本文內容摘自於仕琪老師寫的 opencv入門教程 示例程式如最下面所示 在讀取矩陣元素時,以及獲取矩陣某行的位址時,需要指定資料型別。這樣首先需要不停地寫 讓人感覺很繁瑣,在繁瑣和煩躁中容易犯錯,如下 面 中的錯誤,用 at 獲取矩陣元素時錯誤的使用了 double 型別。這種錯誤不是語法錯誤,因此...

Python 類中為什麼要定義 init

我在今天以前,寫 一般是這樣的 計算長方形的周長和面積 def getperi a,b return a b 2 def getarea a,b return a b print getperi 4,5 print getarea 3,4 然後我發現大多數是這樣寫的 coding utf 8 先定義...

Python 類中為什麼要定義 init

學習並 1.不用init 方法定義類 定義乙個矩形的類,目的是求周長和面積。class rectangle def getperi self,a,b return a b 2 def getarea self,a,b return a b rect rectangle print rect.getp...