為什麼要定義Mat 類

2021-08-15 23:24:22 字數 789 閱讀 3779

本文內容摘自於仕琪老師寫的《opencv入門教程》

示例程式如最下面所示:

在讀取矩陣元素時,以及獲取矩陣某行的位址時,需要指定資料型別。這樣首先需要不停地寫「

」,讓人感覺很繁瑣,在繁瑣和煩躁中容易犯錯,如下

面**中的錯誤,用

at()

獲取矩陣元素時錯誤的使用了

double

型別。這種錯誤不是語法錯誤,因此在編譯時編譯器不會提醒。在程式執行時,

at()

函式獲取到的不是期望的

(i,j)

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

如果使用

mat_

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

mat_

實現,實現**如下面例程裡的第二個雙重

for

迴圈。#include

#include "opencv2/opencv.hpp"

#include

using namespace std;

using namespace cv;

int main(int argc,char* argv)

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

mat_m1=(mat_&)m;

for(int i=0;i}return 0;

}

為什麼要定義Mat 類

內容摘自 opencv入門教程 在讀取矩陣元素時,以及獲取矩陣某行的位址時,需要指定資料型別。這樣首先需要不停地寫,讓人感覺很繁瑣,在繁瑣和煩躁中容易犯錯。如下面 中的錯誤,用at 獲取矩陣元素時錯誤的使用了double型別。這種錯誤不是語法錯誤,因此在編譯時編譯器不會提醒。在程式執行時,at 函式...

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...