乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      像素值的讀寫

       昵稱14216904 2016-02-17
      ps:需要注意的是,如果要遍歷圖像,并不推薦使用 at()函數(shù)。使用這個(gè)函數(shù)的優(yōu)點(diǎn)是代碼的可讀性高,但是效率并不是很高。

      /// bianlixiangsu.cpp : 定義控制臺(tái)應(yīng)用程序的入口點(diǎn)。
      //2016.2.17 來(lái)自opencv 入門教程 3.5.1 at()函數(shù)  3.5.2 使用迭代器 page28-
      /*
      #include "stdafx.h"
      #include <iostream>
      #include "opencv2/opencv.hpp"
      using namespace std;
      using namespace cv;
      int main(int argc, char* argv[])
      {
      Mat grayim(600, 800, CV_8UC1);
      Mat colorim(600, 800, CV_8UC3);
      //遍歷所有像素,并設(shè)置像素值
      for( int i = 0; i < grayim.rows; ++i)
      for( int j = 0; j < grayim.cols; ++j )
      grayim.at<uchar>(i,j) = (i+j)%255;
      //遍歷所有像素,并設(shè)置像素值
      for( int i = 0; i < colorim.rows; ++i)
      for( int j = 0; j < colorim.cols; ++j )
      {
      Vec3b pixel;
      pixel[0] = i%255; //Blue
      pixel[1] = j%255; //Green
      pixel[2] = 0; //Red
      colorim.at<Vec3b>(i,j) = pixel;
      }
      //顯示結(jié)果
      imshow("grayim", grayim);
      imshow("colorim", colorim);
      waitKey(0);
      return 0;
      }
      */

      /*
      //3.5.2 使用迭代器
      #include "stdafx.h"
      #include <iostream>
      #include "opencv2/opencv.hpp"
      using namespace std;
      using namespace cv;
      int main(int argc, char* argv[])
      {
      Mat grayim(600, 800, CV_8UC1);
      Mat colorim(600, 800, CV_8UC3);
      //遍歷所有像素,并設(shè)置像素值
      MatIterator_<uchar> grayit, grayend;

      for( grayit = grayim.begin<uchar>(), grayend =grayim.end<uchar>(); grayit != grayend; ++grayit)
      *grayit = rand()%255;
      //遍歷所有像素,并設(shè)置像素值
      MatIterator_<Vec3b> colorit, colorend;
      for( colorit = colorim.begin<Vec3b>(), colorend = colorim.end<Vec3b>(); colorit != colorend; ++colorit)
      {
      (*colorit)[0] = rand()%255; //Blue
      (*colorit)[1] = rand()%255; //Green
      (*colorit)[2] = rand()%255; //Red
      }
      //顯示結(jié)果
      imshow("grayim", grayim);
      imshow("colorim", colorim);
      waitKey(0);
      return 0;
      }
      */

      //3.5.3 通過(guò)數(shù)據(jù)指針
      #include "stdafx.h"
      #include <iostream>
      #include "opencv2/opencv.hpp"
      using namespace std;
      using namespace cv;
      int main(int argc, char* argv[])
      {
      //3.6.1 單行或單列選擇
      //參數(shù) i 和 j 分別是行標(biāo)和列標(biāo)。例如取出 A 矩陣的第 i 行可以使用如下代碼:
      Mat A = Mat::eye(10, 10, CV_32S);
      Mat line = A.row(1);
      cout<<line<<endl;
      //例如取出 A 矩陣的第 i 行,將這一行的所有元素都乘以 2,然后賦值給第 j行,可以這樣寫:
      A.row(1) = A.row(1)*2;

      //3.6.2 用 Range 選擇多行或多列
      //Range 是 OpenCV 中新增的類,該類有兩個(gè)關(guān)鍵變量 star 和 end。 Range 對(duì)
      //象可以用來(lái)表示矩陣的多個(gè)連續(xù)的行或者多個(gè)連續(xù)的列。其表示的范圍為從 start
      //到 end,包含 start,但不包含 end。 Range 類的定義如下:

      //Range 類還提供了一個(gè)靜態(tài)方法 all(),這個(gè)方法的作用如同 Matlab 中的“ :”,表示所有的行或者所有的列。
      //創(chuàng)建一個(gè)單位陣
      //Mat A = Mat::eye(10, 10, CV_32S);
      //提取第 1 到 3 列(不包括 3) 從0開始計(jì)數(shù)-
      Mat B = A(Range::all(), Range(1, 3));
      //提取 B 的第 5 至 9 行(不包括 9)
      //其實(shí)等價(jià)于 C = A(Range(5, 9), Range(1, 3))
      Mat C = B(Range(2, 9), Range::all());

      cout<<A<<endl<<B<<endl<<C<<endl<<line<<endl;//兩次輸出的line的值不一樣 此處*2了

      //3.6.3 感興趣區(qū)域
      //從圖像中提取感興趣區(qū)域( Region of interest) 有兩種方法,一種是使用構(gòu)造
      //函數(shù),如下例所示:
      //創(chuàng)建寬度為 320,高度為 240 的 3 通道圖像
      Mat img(Size(320,240),CV_8UC3);
      //roi 是表示 img 中 Rect(10,10,100,100)區(qū)域的對(duì)象
      Mat roi(img, Rect(10,10,100,100));
      //除了使用構(gòu)造函數(shù),還可以使用括號(hào)運(yùn)算符, 如下:
      Mat roi2 = img(Rect(10,10,100,100));
      //當(dāng)然也可以使用 Range 對(duì)象來(lái)定義感興趣區(qū)域,如下:
      //使用括號(hào)運(yùn)算符
      Mat roi3 = img(Range(10,100),Range(10,100));

      //3.5.3 通過(guò)數(shù)據(jù)指針
      Mat grayim(600, 800, CV_8UC1);
      Mat colorim(600, 800, CV_8UC3);
      //遍歷所有像素,并設(shè)置像素值
      for( int i = 0; i < grayim.rows; ++i)
      {
      //獲取第 i 行首像素指針
      uchar * p = grayim.ptr<uchar>(i);

      //對(duì)第 i 行的每個(gè)像素(byte)操作
      for( int j = 0; j < grayim.cols; ++j )
      p[j] = (i+j)%255;
      }
      //遍歷所有像素,并設(shè)置像素值
      for( int i = 0; i < colorim.rows; ++i)
      {
      //獲取第 i 行首像素指針
      Vec3b * p = colorim.ptr<Vec3b>(i);

      for( int j = 0; j < colorim.cols; ++j )
      {
      p[j][0] = i%255; //Blue
      p[j][1] = j%255; //Green
      p[j][2] = 0; //Red
      }
      }
      //顯示結(jié)果
      imshow("grayim", grayim);
      imshow("colorim", colorim);
      waitKey(0);
      return 0;
      }

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多