OpenCV中的基礎資料型別中有三大類別
- 第一大類別是從C++中繼承而來的基礎資料型別(如int float等)包括陣列,矩陣,可以來表示基礎的幾何概念如點,大小,矩形
- 第二大類別是輔助物件,這類物件代表更抽象的概念,比如垃圾收集指標類,,資料切片的物件
- 第三大類別是大型的陣列型別,這類原本是涵蓋陣列或者一些原語、程式集或者更常見的資料型別,比如存盤圖片的cv::Mat
- opencv 還會非常經常的使用stl的內容
簡單介紹
- cv::Vec<> 類,代表固定向量 cv::Matx<>固定矩陣類 ,這兩個是維度要已知與上面相似的是cv::Point 類 這個不是固定向量類繼承下來的,是由自己的模板派生的,他們的成員是通過名稱變數轉換得到
Point類可以通過別名來使用正確的末班 如 cv::Point2i cv::Point2f 等等, - cv::Scalar類本質上是個四維Point類,與Point類相似,但實際上與一個可以產生任意四元素向量的模板有關,
一般是雙精度四元素向量的別名,cv::Scalar 是通過整數下標來訪問的,這跟cv::Vec<>相同
這是因為cv::Scalar 直接繼承的cv::Vec<>的實體 - cv::Rect和cv::Size 和Point類相似,繼承自己的模板, Rect包含了Size里面的Height和width
其中兩個整數型別就是自己的名稱,浮點數是 Size2f, Rect 有個類是RotateRect 包含了一個cv::Point2f 的中心點,一個Size2f 的size 和一個額外的浮點型別的角度
cv::Point 類
- 最簡單的型別,可以成為任何型別的點,如整形和浮點型等
- 大多數的程式中 Point類 通過類似cv::Point2i cv::Point3f 等實體化的,數字代表維度,后面的字母代表構造此實體的原語
- 這里有幾個重要的受支持的操作,但是他們是通過隱式轉換到固定向量類而受支持
- 包含所有向量和標量,封裝了線性代數的運算子
| 操作 | 實體 |
|---|---|
| 默認建構式 | cv::Piont2i p; cv::point3i p; |
| 拷貝函式 | cv::Point3f p2(p1); |
| 建構式 | cv::Piont2i p(x,y); cv::point3i p(x,y,z); |
| 構造成固定向量類 | (cv::Vec3f) p; |
| 成員訪問 | p.x; p.y |
| 點乘 | float x = p1.dot(p2); double x = p1.dot(p2) |
| 叉乘 | p2 = cross(p2) |
| 判斷點是否在行r內 | p.inside? |
cv::Scalar 類
- 四維點類
- 有一些與四元向量類相關的特殊成員函式
| 操作 | 實體 |
|---|---|
| 默認建構式 | cv::Scalar s; |
| 拷貝函式 | cv::Scalar s2(s1); |
| 建構式 | cv::Scalar s(x1); cv::Scalar s(x1,x2,x3,x4); |
| 元素相乘 | s1.mul(s2) |
| (四元數) 共軛 | s.conj(); |
| (四元數)真值測驗 | s.isReal(); |
該類繼承自想兩類他繼承了所有的向量操作
Size 類
Size 可以和Piont類互換
| 操作 | 實體 |
|---|---|
| 默認建構式 | cv::Size sz; cv::Size2i sz; cv::Size sz; |
| 拷貝函式 | cv::Size s2(s1); |
| 建構式 | cv::Size sz(w,h) |
| 成員訪問 | sz,.width;sz.height; |
| 計算面積 | sz.area; |
Rect 類
| 操作 | 實體 |
|---|---|
| 默認建構式 | cv::Rect r; |
| 拷貝函式 | cv::Rect r2(r1) |
| 建構式 | cv::Rect r(x,y,w,h) cv::Rect(p, sz); cv:: Rect(p1,p2); |
| 成員訪問 | r.x r.y r.width r.height |
| 計算面積 | r.area; |
| 提取左上角 | r.tl(); |
| 右下角 | r.br(); |
| p在矩形內 | c.contains§; |
- 運算子多載
| 操作 | 實體 |
|---|---|
| 交集 | cv::Rect r3 = r1&r2; r2 &= r1; |
| 同時包含r1,r2的矩形 | cv::Rect r3 = r1 |
| 平移矩形rx個數量 | cv::Rect rx = r+x ; r += rx;(Point) |
| 擴大矩形rs大小 | cv::Rect rx = r+s; r+=s(size) |
| 判斷相等不相等 | == != |
Matx 固定矩陣
為了編譯已知維度的矩陣打造的,都是在堆疊上分配記憶體,分配和清除飛快,在小型的矩陣上面做過特別的優化,運行很快
固定向量類繼承自固定矩陣,其他類繼承自固定向量,可見此類的重要性
通常有別名格式 Matxx{1,2…6}{f,d} 1-6 的任何數
通常是早就已經知道矩陣大小用這個類
所以大型的影像矩陣或者其他靈活大小點陣,需要更大的類,那么就得使用cv::Mat
操作很多可以參考opencv官方檔案,這里不列舉了(累了)
固定向量類
也不介紹了,看檔案吧
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/297664.html
標籤:其他
上一篇:Unity 檔案的增刪查改
