OpenCV从入门到放弃:摸鱼笔记(一)

    零cpp基础的小白探索OpenCV从从入门到放弃的摸鱼记录从这里开始。

    参考书:《OpenCV3编程入门》毛星云、冷雪飞 等编著 电子工业出版社

一、OpenCV(Open Source Computer Vision Library)开源计算机视觉库

    一个开源的机器视觉、图像处理的SDK(Software Development Kit / 软件开发工具包),支持C、C++、Python、Ruby等多种编程语言。

二、常用OpenCV头文件

    1、<opencv2/core/core.hpp>

OpenCV核心组件,核心功能模块。包含基本数据结构(如Mat、Rect等)、基本绘图操作、像素操作、ROI设置、图像混合、DFT(Discrete Fourier Transform)等

    2、<opencv2/imgproc/imgproc.hpp>

OpenCV图像处理组件。包括图像滤波、直方图、特征检测、图像变换等等

    3、<opencv2/highgui/highgui.hpp>

OpenCV高层GUI图形用户界面模块。包括图像载入、显示、写入、滑动条、鼠标操作等

    4、<opencv2/opencv.hpp>

此头文件定义包括以上三个在内的多个头文件,为了简化代码使用。本小白入门被建议不使用它。

三、OpenCV核心数据结构

1、Mat类

    OpenCV中图像储存的类,实为矩阵。由矩阵头(包括矩阵尺寸、存储方法、存储地址等信息)和一个指向存储所有像素的矩阵的指针两个部分组成。因此 Mat类在复制上有一个需要注意的点,赋值运算符和拷贝构造函数只复制信息头,并不复制图像本身储存信息。如

Mat A,C;
A = imread("1.jpg",CV_LOAD_IMAGE_COLOR);
Mat B (A); //拷贝构造函数
C = A;     //赋值运算符
以上A、B、C最终都指向同一个也是唯一一个数据矩阵。虽然信息头不同,但通过任何一个对象所做的改变也会影响其他对象。真想要复制应使用Mat的成员函数,如下

Mat F = A.clone();
Mat G;
A.copyTo(G);
这样使用,改变F或者G就不会影响Mat信息头所指向的矩阵了。

    Mat有多个非常有用的常用成员函数:

M.cols  返回矩阵列数

M.rows  返回矩阵行数

M.total()  返回矩阵元素数(不考虑多通道)

M.channels()  返回矩阵通道数

M.size()  以size类返回矩阵的尺寸

M.at  对矩阵元素进行访问

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值