欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

OpenCvSharp實(shí)現(xiàn)Mat對(duì)象簡(jiǎn)單的像素操作

 更新時(shí)間:2020年11月17日 10:59:36   作者:haixin-561  
這篇文章主要介紹了OpenCvSharp實(shí)現(xiàn)Mat對(duì)象簡(jiǎn)單的像素操作,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

1: 輸出一個(gè)Mat對(duì)象的像素

自定義一個(gè)Mat 對(duì)象,然后輸出像素值(像素值基本都在 0 – 255 之間 ,圖像為三通道)
代碼

public static void F1()
    {
      Scalar s = new Scalar(0, 0, 255); //定義一個(gè)三通道顏色(紅色)
      Mat m = new Mat(100, 100, MatType.CV_8UC3, s); //矩陣數(shù)據(jù)類型(深度和通道數(shù)) MatType


      /*
       * 小圖像的每一個(gè)像素值我們都是知道的,可以輸出查看,驗(yàn)證算法正確性,然后在ran大圖
       */
      //打印 100 * 100 Mat對(duì)象像素值
      for (int i = 0; i < m.Height; i++)
      {
        for (int j = 0; j < m.Width; j++)
        {
          Vec3b color = m.Get<Vec3b>(i, j); //new Vec3b(); 顏色通道類型 (字節(jié)的三元組),直接視同Get泛型方法返回指定類型

          //單獨(dú)獲取指定通道像素
          //color.Item0= m.Get<Vec3b>(i, j).Item0; //R
          //color.Item1 = m.Get<Vec3b>(i, j).Item1; //G
          //color.Item2 = m.Get<Vec3b>(i, j).Item2; //B

          Console.Write(color.Item0 + " " + color.Item1 + " " + color.Item2);
          Console.WriteLine(" "); //輸出一個(gè)換行
        }
        
      }

      using (new Window("M", WindowMode.AutoSize, m))
      {
        Cv2.WaitKey(0);
      }

    }

在這里插入圖片描述

100*100 個(gè)像素大小的圖像不是很大,顏色在代碼值指定了(0,0,255)三通道的顏色值,打印出來都只是(0,0,255)。
下面讀取一張彩色圖片試一下:

 public static void F1(string path)
    {
      //Scalar s = new Scalar(0, 0, 255);
      //Mat m = new Mat(100, 100, MatType.CV_8UC3, s); //矩陣數(shù)據(jù)類型(深度和通道數(shù)) MatType
      Mat m = new Mat(path, ImreadModes.AnyColor | ImreadModes.AnyDepth);

      /*
       * 小圖像的每一個(gè)像素值我們都是知道的,可以輸出查看,驗(yàn)證算法正確性,然后在ran大圖
       */
      //打印 100 * 100 Mat對(duì)象像素值
      for (int i = 0; i < m.Height; i++)
      {
        for (int j = 0; j < m.Width; j++)
        {
          Vec3b color = m.Get<Vec3b>(i, j); //new Vec3b(); 顏色通道類型(字節(jié)的三元組) ,直接視同Get泛型方法返回指定類型

          //單獨(dú)獲取指定通道像素
          //color.Item0= m.Get<Vec3b>(i, j).Item0; //R
          //color.Item1 = m.Get<Vec3b>(i, j).Item1; //G
          //color.Item2 = m.Get<Vec3b>(i, j).Item2; //B

          Console.Write(color.Item0 + " " + color.Item1 + " " + color.Item2);
          Console.WriteLine(" "); //輸出一個(gè)換行
        }
        
      }
      Console.WriteLine("圖像高度:{0}", m.Height);
      Console.WriteLine("圖像寬度:{0}", m.Width);
      using (new Window("M", WindowMode.AutoSize, m))
      {
        Cv2.WaitKey(0);
      }

    }

在這里插入圖片描述

這張圖比較大,輸出像素要費(fèi)點(diǎn)時(shí)間,最后輸出了圖像的高度和寬度 480 * 512 =245760 多個(gè)像素點(diǎn)。 像素點(diǎn)的值 都在0 --255之間且是正數(shù)。

2:使用指針獲取一個(gè)像素值和圖像的行列值

代碼 在C#中使用指針方法要加 unsafe , Main函數(shù)也要加

unsafe static void Main(string[] args)
    {
      string imagePath = @"E:\image\lenna.png"; //圖片加載路徑
      
      Function1(imagePath);
    }
/// <summary>
    /// 操作指針要加 unsafe
    /// </summary>
    unsafe public static void Function1(string path)
    {
      Mat src = new Mat(path, ImreadModes.AnyColor);
      if (src.Empty()) //判斷 MAT對(duì)象是否為空,不過在C#中好像沒用,因?yàn)樵趍at對(duì)象初始化的時(shí)候找不到圖片就直接拋出異常了,但是C++中可以用來判斷。
      {
        Console.WriteLine("加載圖像出錯(cuò)");
        return;
      }


      /*
       C++:
       Mat dst;
       dst=Mat(src.Size(), src.Type());
       dst=Scalar(127,0,255);
       */
      //Scalar s = new Scalar(127, 0, 255); //創(chuàng)建一個(gè)顏色標(biāo)量(RED)C# 中是一個(gè)對(duì)象
      // Mat dst = new Mat(src.Size(), src.Type(),s);//創(chuàng)建一個(gè)與src 的大小和類型一直的圖片矩陣

      //Mat dst = src.Clone(); //克?。旱玫揭粋€(gè)完全拷貝的對(duì)象

      Mat dst = new Mat();
      src.CopyTo(dst); //拷貝一個(gè)與克隆類似,但是dst必須先new出來

      //Cv2.CvtColor(src, dst, ColorConversionCodes.BGRA2GRAY); //轉(zhuǎn)為灰度圖
      Console.WriteLine("InputImage 顏色通道:{0}", src.Channels()); //顏色通道數(shù)
      Console.WriteLine("Create 顏色通道:{0}", dst.Channels()); //顏色通道數(shù)

      //指針獲取值(根據(jù)下標(biāo)),第一個(gè)像素值
      IntPtr c = dst.Ptr(0); //Mat對(duì)象的 Ptr方法:返回指向指定矩陣行的指針。
      byte* c1 = (byte*)c; //像素值在C#中是byte類型 ,在C++中是 uchar類型
      //byte* cc = (byte*)dst.Ptr(0);
      Console.WriteLine("第一個(gè)像素值:{0}", *c1);

      int row = dst.Rows; //行
      int clo = dst.Cols; //列
      Console.WriteLine("Rows :{0} ;Cols :{1}", row, clo);
      using (new Window("Create", WindowMode.FreeRatio, dst))
      using (new Window("InputImage", WindowMode.FreeRatio, src))
      {
        Cv2.WaitKey(0);
      }
    }

在這里插入圖片描述

到此這篇關(guān)于OpenCvSharp實(shí)現(xiàn)Mat對(duì)象簡(jiǎn)單的像素操作的文章就介紹到這了,更多相關(guān)OpenCvSharp Mat對(duì)象像素操作內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C# 中如何取絕對(duì)值函數(shù)

    C# 中如何取絕對(duì)值函數(shù)

    本文主要介紹了C# 中取絕對(duì)值的函數(shù)。具有很好的參考價(jià)值。下面跟著小編一起來看下吧
    2017-03-03
  • c#實(shí)現(xiàn)選擇排序的示例

    c#實(shí)現(xiàn)選擇排序的示例

    這篇文章主要介紹了c#實(shí)現(xiàn)選擇排序的示例,幫助大家更好的理解和使用排序算法,感興趣的朋友可以了解下
    2020-10-10
  • 淺談C#設(shè)計(jì)模式之開放封閉原則

    淺談C#設(shè)計(jì)模式之開放封閉原則

    這篇文章主要介紹了淺談C#設(shè)計(jì)模式之開放封閉原則,需要的朋友可以參考下
    2014-12-12
  • C#中四種定時(shí)器的用法詳解

    C#中四種定時(shí)器的用法詳解

    日常項(xiàng)目開發(fā)中,很多時(shí)候都需要用到定時(shí)器來處理一些問題,那么c#中各種定時(shí)器應(yīng)該怎么用呢?下面來簡(jiǎn)單介紹下C#中4種定時(shí)器的使用方法說明,感興趣的朋友可以參考下
    2024-04-04
  • C#中的虛方法和抽象方法的運(yùn)用

    C#中的虛方法和抽象方法的運(yùn)用

    這篇文章主要介紹了C#中的虛方法和抽象方法的運(yùn)用,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • C# 如何實(shí)現(xiàn)Token

    C# 如何實(shí)現(xiàn)Token

    這篇文章主要介紹了C# 如何實(shí)現(xiàn)Token,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-03-03
  • C# ManagementObjectSearcher操作window案例詳解

    C# ManagementObjectSearcher操作window案例詳解

    這篇文章主要介紹了C# ManagementObjectSearcher操作window案例詳解,本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • C#實(shí)現(xiàn)Json文件讀寫的方法代碼

    C#實(shí)現(xiàn)Json文件讀寫的方法代碼

    這篇文章主要給大家介紹了關(guān)于C#實(shí)現(xiàn)Json文件讀寫的相關(guān)資料,C# 讀取JSON文件并讀取某一個(gè)關(guān)鍵字的值可以使用Newtonsoft.Json庫,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • 淺析WPF中ToolTip工具提示的應(yīng)用

    淺析WPF中ToolTip工具提示的應(yīng)用

    在日常應(yīng)用中,當(dāng)鼠標(biāo)放置在某些控件上時(shí),都會(huì)有相應(yīng)的信息提示,從軟件易用性上來說,這是一個(gè)非常友好的功能設(shè)計(jì),本文就來和大家簡(jiǎn)單聊聊WPF中ToolTip工具提示的相關(guān)使用,有興趣的可以了解下
    2023-12-12
  • C#中調(diào)用SAPI實(shí)現(xiàn)語音合成的2種方法

    C#中調(diào)用SAPI實(shí)現(xiàn)語音合成的2種方法

    這篇文章主要介紹了C#中調(diào)用SAPI實(shí)現(xiàn)語音合成的2種方法,本文直接給出示例代碼,需要的朋友可以參考下
    2015-06-06

最新評(píng)論