<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      OpenCV 圖像復制和圖像區域讀寫

      圖像復制

      • 共享數據, 使用 new Mat(srcMat, ...) 和 newMat=srcMat 生成新的Mat都和原Mat共享數據, 也就是說如果修改某一Mat,其他Mat也會隨之改變
      • 復制全新的Mat, 使用CopyTo() 和 Clone() 方法將生成一個全新的Mat, 新Mat和原Mat不共享數據.

      圖像區域和點的讀寫

      • 區域讀取: 通過srcMat[Rect] 讀取指定區域, 讀取的結果也是一個Mat
      • 區域寫入: 可以將一個新的Mat賦值到srcMat[Rect]
      • 點的讀寫: 點的讀寫有很多種方法, 比如指針、GetIndexer、At、Get/Set和LUT等, 如果性能要求不高的話, 推薦使用 At<>() 泛型方法, 代碼簡單已讀. 可參考 https://blog.csdn.net/TyroneKing/article/details/129108838
      • 點的讀取: 可以通過 srcMat.At<>() 方法獲取指定點的顏色值.
      • 點的寫入: 可以直接給 srcMat.At<>()的結果賦值

      圖像共享數據的測試

          private void copyMats()
        {
            string pngFile = @"D:\my_workspace\opencv\images\draw.png";
            var mat = Cv2.ImRead(pngFile, ImreadModes.Color);
      
            //通過指定Rect方式截取圖像,新的Mat和原Mat共享數據
            var partRef1 = new Mat(mat, new Rect(0, 0, mat.Width, mat.Height));
      
            //通過指定rowRange和colRange方式截圖圖像,新的Mat和原Mat共享數據
            var partRef2 = new Mat(mat, rowRange: new Range(50, 300), colRange: Range.All);
      
            //CopyTo()和Clone()都是復制出一份新的Mat
            var deepCopyMat = new Mat();
            mat.CopyTo(deepCopyMat);
            var cloneMat = mat.Clone();
      
            var rect = new Rect(10, 10, 100, 100);
            mat[rect] = new Mat(rect.Width, rect.Width, MatType.CV_8UC3, Scalar.Red);
      
            Cv2.ImShow("mat", mat);
            Cv2.ImShow("partRef1", partRef1);
            Cv2.ImShow("partRef2", partRef2);
            Cv2.ImShow("deepCopyMat", deepCopyMat);
            Cv2.ImShow("cloneMat", cloneMat);
      
            Cv2.WaitKey();
            Cv2.DestroyAllWindows();
        }
      

      效果截圖:

      讀寫測試代碼

          private void readWriteTest()
          {
              string pngFile = @"D:\my_workspace\opencv\images\draw.png";
              var srcMat = Cv2.ImRead(pngFile, ImreadModes.Color);
      
              var rect = new Rect(10, 10, 200, 200);
      
              //通過srcMat[Rect] 讀取指定區域, 讀取的結果也是一個Mat
              var newMat = srcMat[rect];
      
              //可以將一個新的Mat賦值到srcMat[Rect]
              srcMat[rect] = new Mat(rect.Width, rect.Width, MatType.CV_8UC3, Scalar.Green);
      
              for (int i = 0; i < srcMat.Rows; i++)
              {
                  //可以通過 srcMat.At() 方法獲取指定點的顏色值.
                  var vec3b = srcMat.At<Vec3b>(i, 100);
      
                  //可以直接給 srcMat.At()的結果賦值
                  srcMat.At<Vec3b>(i, 100) = new Vec3b(vec3b.Item0, 0, 255);
              }
      
              Cv2.ImShow("mat", srcMat);
              Cv2.ImShow("newMat", newMat);
      
              Cv2.WaitKey();
              Cv2.DestroyAllWindows();
          }
      

      效果截圖:

      參考:

      posted @ 2023-11-05 19:47  harrychinese  閱讀(276)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 欧美性猛交xxxx乱大交丰满| 日韩精品一区二区三区激| 91精品国产综合久蜜臀| A级毛片无码久久精品免费| 亚洲中文字幕日产无码成人片| 国产成人8X人网站视频| 国产综合色在线精品| 久久久精品2019中文字幕之3| 日韩欧美不卡一卡二卡3卡四卡2021免费| 中文字幕日韩精品有码视频| 免费av深夜在线观看| 亚洲日韩性欧美中文字幕| 少妇人妻偷人偷人精品| 国产精品播放一区二区三区| 亚洲欧美日韩成人综合一区| 国产曰批视频免费观看完| 好紧好滑好湿好爽免费视频| 国产人妻大战黑人第1集| 免费激情网址| 国产播放91色在线观看| 青草成人精品视频在线看| 日本久久香蕉一本一道| 乱人伦人妻中文字幕无码久久网 | 国产成人理论在线视频观看| 日韩放荡少妇无码视频| A毛片终身免费观看网站| 亚洲丰满老熟女激情av| 青青青青国产免费线在线观看 | 久久精品国产88精品久久| 国产精品午夜福利视频| 国产无人区码一区二区| 国产精品无遮挡一区二区| 中国老妇xxxx性开放| 欧美国产亚洲日韩在线二区| 国产免费无遮挡吃奶视频| 国产福利酱国产一区二区| 欧美激欧美啪啪片| 在线观看视频一区二区三区| 亚洲乱码日产精品一二三| 国产在线精品中文字幕| 黑人巨大无码中文字幕无码|