首页 > 其他分享 >OpenCV 图像复制和图像区域读写

OpenCV 图像复制和图像区域读写

时间:2023-11-05 19:57:13浏览次数:34  
标签:mat 读写 Cv2 OpenCV 图像 var new Mat

图像复制

  • 共享数据, 使用 new Mat(srcMat, ...) 和 newMat=srcMat 生成新的Mat都和原Mat共享数据, 也就是说如果修改某一Mat,其他Mat也会随之改变
  • 复制全新的Mat, 使用CopyTo() 和 Clone() 方法将生成一个全新的Mat, 新Mat和原Mat不共享数据.

图像共享数据的测试

    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();
  }

效果截图:

标签:mat,读写,Cv2,OpenCV,图像,var,new,Mat
From: https://www.cnblogs.com/harrychinese/p/17811012.html

相关文章

  • OpenCV 输出文本
    PutText()输出文本OpenCV5将支持中文字符的输出,当前版本OpenCV4原生不支持,可以使用Contrib包+FreeType方式实现,不过比较麻烦.为了省事,也可以通过将Mat转成bitmap,然后使用GDI方式输出中文字符.示例代码///<summary>///OpenCV暂时不能支持中......
  • Python OpenCV 形态学应用—图像开运算与闭运算
    ✅作者简介:热爱科研的算法开发者,Python、Matlab项目可交流、沟通、学习。......
  • mysql读写分离
    ####在企业生产环境中,mysql架构采用主从模式,业务系统连接数据库;1)业务系统连接mysql,master主库;2)mysql从库是跟master主库进行数据同步;3)如果master主机宕机,业务系统怎么操作?4)可以修改业务系统的数据库配置ip为mysqlslave从库;5)不管主从如何切换,业务系统读、写请求只会发给一台......
  • OpenCV 图像读写和显示
    图像读取ImRead()函数可从文件中读取图像,并生成一个Mat对象,ImRead()函数支持绝大多数图像格式.注意点:读取后生成的Mat对象,颜色空间为BGR,第二参数为读取方式,常用的方式有:.ImreadModes.Color:彩色方式读取,即使原图是4通道或者单通道,生成的Mat永远为三通......
  • 机器学习——图像卷积
    特征映射和感受野 因此,当需要检测输入特征中更广区域时,我们可以构建一个更深的卷积网络 。 利用卷积网络进行目标边缘检测......
  • QT + OPENCV + OpenCV_contrib + MINGW编译
    参见  QT+OPENCV+OpenCV_contrib+MINGW编译_东方.既白的博客-CSDN博客注意事项:1. opencv不要采用版本太高的,与mingw730_64编译器不兼容。太多错误2. ......
  • JUC并发编程学习笔记(八)读写锁
    读写锁ReadWriteLockReadWriteLock只存在一个实现类那就是ReentrantReadWriteLock,他可以对锁实现更加细粒化的控制读的时候可以有多个阅读器线程同时参与,写的时候只希望写入线程是独占的Demo:packageorg.example.rw;importjava.util.HashMap;importjava.util.Map;impo......
  • 01.矢量图像和数字图像区别
    矢量图像和数字图像是两种不同的图像表示方式:矢量图像:矢量图像使用数学公式来描述图像中的几何形状和颜色信息。它由一系列点、线段和曲线组成,每个元素都有其位置和属性。矢量图像可以无限缩放而不失真,因为它们基于数学公式生成,而不是像素网格。数字图像:数字图像由像素组成,......
  • OpenCV 基础数据类型
    常用基础数据类型Rect/Rect2d/Rect2f定义一个矩形区域,带大小和位置Size/Size2d/Size2f定义一个矩形大小,不带位置Point/Point2d/Point3i定义一个二维或三维的点坐标Range/Rangef,定义一个带有下上限的范围Vec3b/Vec3d/Vec4b,定义一个三维或四维的向量,Mat的每个点......
  • pytorch图像变换和增强
    pytorch图像变换和增强目录pytorch图像变换和增强总览调整大小灰度变换标准化水平垂直翻转随机旋转中心裁剪随机裁剪亮度对比度饱和度高斯模糊高斯噪声随机块中心区域参考资料总览#使用数据增强技术可以增加数据集中图像的多样性,从而提高模型的性能和泛化能力。1.尺寸变换tr......