zoukankan      html  css  js  c++  java
  • Xcode+OpenCV3.4.0 折腾(4)

    ~ 开始使用OpenCV了 ~

    今天尝试的是 容器 Mat 的小部分操作

    内容来自于
    https://www.bilibili.com/video/av17748771/?from=search&seid=3213762283999816753#page=4

    视频中的src,dst的用法,感觉是
    src = source      源
    dst = destination 目的
    可以看清楚数据传送的方向

    构造一个 Mat

    比如现在打开了一张图片 test1.png

    	Mat src = imread("/Users/Aphas1a/Documents/C/OpenCV/opencvtest/test1.png");
        if (src.empty())
        {
            cout << "could not load...
    ";
            return 1;
        }
       
    

    构造一个和 Mat src 一样的 Mat 的方法。注释掉的是达到一样目的的操作

    	dst = Mat(src.rows, src.cols, src.type());
        //dst = Mat(src.size(),src.type());
        //dst = src.clone();
        //src.copyTo(dst);
    
    

    把彩图转灰度图
    cvtColor(src, dst, COLOR_BGR2GRAY);
    
    
    • 最新几个版本的OpenCV已改为COLOR_BGR2GRAY类似形式,视频里是CV_BGR2GRAY
    • 因为OpenCV的颜色空间以 BGR 为主,在这里用COLOR_RGB2GRAY时如果用imshow()显示图片似乎没什么关系,但不知道其他地方混用会怎么样 0. o

    单纯的构建一个自定义的 Mat (但是用法看手册有25种。。具体要用哪种还是要用了再查吧 Orz)
    cv::Mat::Mat()	
    

    举一个应用的例子:
    建立一个【100 × 100】像素的,【每通道8位 无符号 char型 3通道】的,
    每个像素初始化颜色为红色的(OpenCV的颜色空间以 BGR 为主)的 Mat
    PS. 向量长度和通道数要一致

    cv::Mat::Mat(100, 100, CV_8UC3, Scalar(0,0,255));	
    

    还有2个函数不知道怎么归类乱放在这吧
    cv::Mat::zeros()  // 类似matlab生成0矩阵
    cv::Mat::eye()  // 类似matlab生成单位矩阵
    
    

    **Mat对象使用的要点**
    • 使用了OpenCV的c++接口,不用考虑内存分配问题
    • 赋值操作和拷贝构造函数只会复制 头部分
    • 使用clone和copyTo两个函数会 完全复制

  • 相关阅读:
    013.ES6 -对象字面量增强型写法
    012. ES6
    011. ES6 语法
    10. 9. Vue 计算属性的setter和getter 以及 计算属性的缓存讲解
    4. Spring MVC 数据响应方式
    3. SpringMVC 组件解析
    9. Vue 计算属性
    【洛谷 2984】给巧克力
    【洛谷 1821】捉迷藏 Hide and Seek
    【洛谷 1821】银牛派对Silver Cow Party
  • 原文地址:https://www.cnblogs.com/aphas1a/p/8363901.html
Copyright © 2011-2022 走看看