OpenCVMat類使用總結

      網友投稿 1323 2022-05-30

      #前言

      Mat 是Opencv中很常用的一個圖像容器類,圖像在計算機中的存儲形式是二進制字節流,其本質的存儲形式如下圖所示;

      而一張圖片是由很多像素點組成,單個像素點又會因為圖像格式的不同而不同。例如彩色的RBG或者灰度圖像。而在OpenCV中,則可以抽象成一個順序排列的內存區域,里面保存了圖像的所有像素信息,這里用Mat類封裝了這些圖像的信息,包括圖像大小,類型等等,大大地簡化了我們處理和操作圖像。

      #概念

      Mat 是一個類,從最早的OpenCV是C語言風格發展到現在的C++風格,它對面向對象的支持更加友好。相比較于之前C結構的IplImage,Mat有更多有優點;

      內存的分配與釋放更加安全;

      使用Mat可以使代碼更加簡潔;

      對于圖像數據的處理更加高效;

      Mat基本上是一個包含兩個數據部分的類:矩陣頭(包含矩陣大小,用于存儲的方法,存儲矩陣的地址等信息)和指向包含矩陣的矩陣的指針。像素值(取決于選擇存儲的方法取任何維度)。矩陣頭大小是恒定的,但是矩陣本身的大小可能隨圖像而變化,并且通常大幾個數量級。OpenCV是一個圖像處理庫。它包含大量圖像處理功能。為了解決計算挑戰,大多數時候您最終會使用庫的多個功能。因此,將圖像傳遞給函數是一種常見的做法。我們不應該忘記我們正在討論圖像處理算法,這些算法往往計算量很大。我們要做的最后一件事是通過制作不必要的潛在大圖像副本來進一步降低程序的速度。為解決此問題,OpenCV使用引用計數系統(Reference Counting System)。這個想法是每個Mat對象都有自己的頭,但是矩陣可以通過讓它們的矩陣指針指向同一個地址來共享它們的兩個實例。此外,復制操作符只會將標題和指針復制到大矩陣,而不是數據本身。

      #實戰

      1 基礎操作

      1初始化

      //CV_8UC(n), ..., CV_64FC(n) Mat A(5,5,CV_64FC1,1); std::cout << "A= " << endl << " " << A << endl; Mat B(5,5,CV_64FC1,2); std::cout << "B= " << endl << " " << B << endl; Mat C(5,5,CV_64FC3,Scalar(6.0f,7.0f,8.0f)); std::cout << "C= " << endl << " " << C << endl; Mat D = Mat::eye(3,3,CV_64F); std::cout << "D= " << endl << " " << D << endl; Mat E = Mat::ones(3,3,CV_64F); std::cout << "E= " << endl << " " << E << endl; Mat F = Mat::zeros(3,3,CV_64F); std::cout << "F= " << endl << " " << F << endl;

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      OpenCV之Mat類使用總結

      12

      13

      14

      15

      16

      17

      18

      A=

      [1, 1, 1, 1, 1;

      1, 1, 1, 1, 1;

      1, 1, 1, 1, 1;

      1, 1, 1, 1, 1;

      1, 1, 1, 1, 1]

      B=

      [2, 2, 2, 2, 2;

      2, 2, 2, 2, 2;

      2, 2, 2, 2, 2;

      2, 2, 2, 2, 2;

      2, 2, 2, 2, 2]

      C=

      [6, 7, 8, 6, 7, 8, 6, 7, 8, 6, 7, 8, 6, 7, 8;

      6, 7, 8, 6, 7, 8, 6, 7, 8, 6, 7, 8, 6, 7, 8;

      6, 7, 8, 6, 7, 8, 6, 7, 8, 6, 7, 8, 6, 7, 8;

      6, 7, 8, 6, 7, 8, 6, 7, 8, 6, 7, 8, 6, 7, 8;

      6, 7, 8, 6, 7, 8, 6, 7, 8, 6, 7, 8, 6, 7, 8]

      D=

      [1, 0, 0;

      0, 1, 0;

      0, 0, 1]

      E=

      [1, 1, 1;

      1, 1, 1;

      1, 1, 1]

      F=

      [0, 0, 0;

      0, 0, 0;

      0, 0, 0]

      2 讀取圖片

      #include #include int main(char argc,char** argv){ cv::Mat img = cv::imread(argv[1],-1); if(img.empty()){ return -1; } cv::imshow("Image",img); cv::waitKey( 0 ); return 0; }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      3 圖像ROI

      #include #include #include using namespace cv; using namespace std; int main(int argc,char* argv[]){ Mat img_ori = imread(argv[1],IMREAD_COLOR); std::cout << "row is " << img_ori.rows << std::endl; std::cout << "col is " << img_ori.cols << std::endl; // 取img_ori圖像中坐標(0,0)為起點長50高50區域的圖片 Mat img_des = img_ori( Rect(0, 0, 50, 50)); cv::namedWindow("img_des",cv::WINDOW_NORMAL); imshow("img_des",img_des); waitKey(0); }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      #參考:

      https://docs.opencv.org/2.4/doc/tutorials/core/mat_the_basic_image_container/mat_the_basic_image_container.html

      https://docs.opencv.org/3.1.0/d4/da8/group__imgcodecs.html#ga288b8b3da0892bd651fce07b3bbd3a56

      OpenCV

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:國家管網攜手華為云Stack打造數字平臺,油氣管道風險作業更安全
      下一篇:【愚公系列】2021年12月 網絡工程-虛擬網絡VPN
      相關文章
      国产亚洲精品激情都市| 亚洲一区精彩视频| 国产亚洲欧美在线观看| 亚洲资源最新版在线观看| 7777久久亚洲中文字幕蜜桃| 亚洲精品高清国产一线久久| 亚洲色中文字幕无码AV| 久久久久久A亚洲欧洲AV冫| 亚洲精品无码成人片在线观看| 无码一区二区三区亚洲人妻| 亚洲国产午夜精品理论片在线播放 | 亚洲网站在线播放| 亚洲精品亚洲人成在线麻豆| 亚洲精品无码久久毛片波多野吉衣| 久久综合亚洲色一区二区三区 | 亚洲国产精品18久久久久久| 91在线亚洲综合在线| 亚洲日韩看片无码电影| 亚洲av综合av一区二区三区| 亚洲sm另类一区二区三区| 国产精品亚洲二区在线| gogo全球高清大胆亚洲| 亚洲成a人片在线观看久| 亚洲一级特黄大片无码毛片| 亚洲综合国产一区二区三区| 亚洲日韩精品无码专区网址| 国产亚洲精品无码成人| 亚洲AV无码专区在线播放中文| 亚洲va在线va天堂va不卡下载 | 国产av无码专区亚洲av毛片搜| 亚洲av无码成人精品区| 2022中文字字幕久亚洲| 国产亚洲综合成人91精品 | 日日摸日日碰夜夜爽亚洲| 亚洲国产精品成人| 亚洲一区二区三区影院| 亚洲高清在线视频| 亚洲国产精品乱码在线观看97| youjizz亚洲| 亚洲精品自偷自拍无码| 亚洲第一黄片大全|