Opecv4.0 关于Mat初始化的疑惑

1,Mat类部分初始化函数 

2,Mat(int rows,int cols, int type, const Scalar& s),行在前,即h在前,列在后,即w在后

     Mat(Size size, int type, const Scalar& s)

     rows ------>h

     cols ------>w

    Size(w,h)

    所以上述两种初始化方法,要注意行,列的位置

3, Mat image = imread("images\\1.png", 0);
      Mat image1(image) ;//仅是创建了Mat的头部分,image1与image共享数据区
      Mat image1 = image ;//仅是创建了Mat的头部分,image1与image共享数据区
      Mat image1 = image.clone() ;//完全拷贝,把image中的所有信息拷贝到image1中
      Mat image1;
      image.copyTo(image1);//拷贝image的数据区到image1中,在拷贝数据前会有一步:image1.create(this->size , this->type)

4, Mat mz = Mat::zeros(Size(w,h),CV_8UC1); // 全零矩阵

      Mat tmpdata = Mat::zeros(h, w, CV_8UC1);//h行w列的全0矩阵


      Mat mo = Mat::ones(cv::Size(w,h),CV_8UC1);  // 全1矩阵

      Mat tmpdata = Mat::ones(h, w, CV_8UC1);//h行w列的全1矩阵


      Mat me = Mat::eye(cv::Size(w,h),CV_32FC1);  // 对角线为1的对角矩阵

      Mat tmpdata = Mat::eye(h, w, CV_32FC1);//h行w列的对角矩阵

5,对于维数较小的Mat类型,直接定义赋值方法如下:

      Mat mtest = (Mat_<float>(4, 1) << -0.055818, -0.734866, -0.675912, 0.506045);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OpenCV 中,你可以使用构造函数或者赋值运算符对 `cv::Mat` 进行初始化。 1. 构造函数初始化 `cv::Mat` 有多个构造函数,可以根据不同的参数类型来初始化矩阵。其中,最常用的构造函数是: ```c++ cv::Mat::Mat(int rows, int cols, int type) ``` 其中,`rows` 和 `cols` 分别代表矩阵的行数和列数,`type` 是矩阵的数据类型。例如,如果你想要创建一个大小为 3x3,数据类型为浮点数的矩阵,你可以使用以下代码: ```c++ cv::Mat mat1(3, 3, CV_32F); ``` 此外,你还可以使用另一个构造函数来创建指定大小、数据类型和初始值的矩阵: ```c++ cv::Mat::Mat(int rows, int cols, int type, const Scalar& s) ``` 其中,`s` 是一个 `cv::Scalar` 类型的参数,用于指定矩阵的初始值。例如,如果你想要创建一个大小为 3x3,数据类型为整数(`CV_32S`),且所有元素初始值为 1 的矩阵,你可以使用以下代码: ```c++ cv::Mat mat2(3, 3, CV_32S, cv::Scalar(1)); ``` 2. 赋值运算符初始化 你可以使用赋值运算符将一个已有的 `cv::Mat` 赋值给另一个 `cv::Mat`。例如,如果你已经有一个大小为 3x3,数据类型为浮点数的矩阵 `srcMat`,你可以使用以下代码将其赋值给另一个矩阵 `dstMat`: ```c++ cv::Mat dstMat = srcMat.clone(); // 复制 srcMat 的内容到 dstMat 中 ``` 在这个例子中,我们使用了 `clone()` 函数来复制 `srcMat` 的内容到 `dstMat` 中。你也可以使用 `=` 运算符来进行赋值,例如: ```c++ cv::Mat dstMat = srcMat; // 直接将 srcMat 的引用赋值给 dstMat ``` 需要注意的是,这种方式会使 `dstMat` 和 `srcMat` 指向同一个内存地址,因此任何对 `dstMat` 的修改都会影响 `srcMat`。因此,在实际使用中,建议使用 `clone()` 函数来复制矩阵。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值