• Opencv3——Mat构造与复制


    Mat不再需要手动分配其内存并在不需要时立即释放它。大多数OpenCV函数都会自动分配其输出数据。

    Mat基本上是一个包含两个数据部分的类:矩阵头(包含诸如矩阵大小,用于存储的方法,存储矩阵的地址等信息)和指向包含矩阵的矩阵的指针。像素值(取决于选择存储的方法取任何维度)。矩阵标题大小是恒定的,但是矩阵本身的大小可能因图像而异,并且通常大于数量级。

    #include <opencv2/opencv.hpp>

    #include <iostream>

    using namespace cv;

    using namespace std;

    int main(int artc, char** argv) {

             Mat src = imread("D:/test.png");

             if (src.empty()) {

                      printf("could not load image... ");

                      return -1;

             }

             namedWindow("input", CV_WINDOW_AUTOSIZE);

             imshow("input", src);

        // 创建方法 - 克隆

             Mat m1 = src.clone();//重新分配 一块内存存储

             // 复制

             Mat m2;

             src.copyTo(m2);//重新分配一块内存存储

             // 赋值法

             Mat m3 = src;//仅复制指向该图像内存的指针,并没有重新分配内存

             // 创建空白图像

             Mat m4 = Mat::zeros(src.size(), src.type());

             Mat m5 = Mat::zeros(Size(512, 512), CV_8UC3);

             Mat m6 = Mat::ones(Size(512, 512), CV_8UC3);

             Mat kernel = (Mat_<char>(3, 3) << 0, -1, 0,

                      -1, 5, -1,

                      0, -1, 0);

             waitKey(0);

             return 0;

    }

    后知后觉、越学越菜
  • 相关阅读:
    uni-app开发经验分享九: 组件传值
    uni-app开发经验分享八: 实现微信APP支付的全过程详解
    CSS3+JS完美实现放大镜模式
    原生JS拖拽
    LeetCode 797. 所有可能的路径
    面试题 02.01. 移除重复节点
    LeetCode 139. 单词拆分
    LeetCode 1436. 旅行终点站
    LeetCode 16. 最接近的三数之和
    Hadoop 3.13在Ubuntu20.04上的单机伪分布式配置
  • 原文地址:https://www.cnblogs.com/chenhuanting/p/10830103.html
Copyright © 2020-2023  润新知