美文网首页
opencv 简易入门概述

opencv 简易入门概述

作者: 一半浮沉 | 来源:发表于2019-08-22 14:33 被阅读0次
    常用模块介绍
    1. core 模块 —— 核心库,数据结构和基本运算
    2. highgui 模块 —— IO库,视频和图像的读入和显示
    3. imgproc 模块 —— 插件库,和图像有关的大部分都有,比如滤波器、图像变换之类的
    4. opencv_contrib —— 试用的功能
    5. training_toolbox_tensorflow —— 再训练 open_model_zoo 中的模型
    6. feature2d —— 2d特征框架

    其余模块相对小众,用时查询一下即可;

    数据类型

    1,基础数据类型type,。type可以是CV_8UC1,CV_16SC1,…,
    CV_64FC4 等。里面的 8U 表示 8 位无符号整数,16S 表示 16 位有符号整数,64F
    表示 64 位浮点数(即 double 类型);C 后面的数表示通道数,例如 C1 表示一个
    通道的图像,C4 表示 4 个通道的图像,以此类推。
    如果你需要更多的通道数,需要用宏 CV_8UC(n),例如:

    Mat M(3,2, CV_8UC(5));//创建行数为 3,列数为 2,通道数为 5 的图像
    

    2,在引入 core 模块后,我们可以使用下面的数据类型描述数据,其中最重要、最常用的是 Mat:

    Mat 是 OpenCV 中用来表示图像的多维数组,类似 tensorflow 和 pytorch 中的 tensor。

    Mat src = imread(filepath);
    

    3,其余Range,Vec, Size, Point, Rect 和其他库或者语言里面的意思近似,查查文档就明了。

    基本操作

    这里简单介绍三个主要模块提供的功能,这些功能完成了图像的输入、处理和输出。复杂的模块可以看作 imgproc 的拓展,封装了更为复杂的图像处理内容。

    在引入 highgui 模块后,我们可以进行图像、视频的 IO 操作:

    // 读入图像
    Mat image = imread("file path");
    // 创建窗口
    namedWindow("window name", WINDOW_AUTOSIZE);
    // 显示图像
    imshow("window name", image);
    // 保存图像
    imwrite("file path", image);
    // 销毁窗口
    destroyAllWindows()
    // 等待按键,0代表无限等待
    waitKey(0)
    

    core 模块为数据类型提供了加减乘除等基本操作:

    Mat image_1 = ...
    Mat image_2 = ...
    Mat image_3 = (image_1 + image2) * 3
    

    imgproc 模块提供了一些更复杂的图像变换操作:

    // 将图像 image 转为灰度图赋值给 result
    cvtColor(image, result, COLOR_BGR2GRAY);
    // 将图像 image 翻转赋给 result
    flip(image, result, 0); 
    // 将 image 缩放为 size 的大小并赋值给 result
    resize(image, result, Size(...),0,0,INTER_LINEAR);
    
    神经网络

    能看神经网络 ,基本上有TF,Keras, Caffe 等主流框架的使用经验,就不在这里BB了。

    图像存储

    1,一般来说,灰度图用 2 维矩阵表示,彩色(多通道)图像用 3 维矩阵(M
    × N × 3)表示。对于图像显示来说,目前大部分设备都是用无符号 8 位整
    数(类型为 CV_8U)表示像素亮度。
    2,图像数据在计算机内存中的存储顺序为以图像最左上点(也可能是最左下
    点)开始,
    3,在 OpenCV 中,RGB 图像的通道顺序为 BGR ,

    相关文章

      网友评论

          本文标题:opencv 简易入门概述

          本文链接:https://www.haomeiwen.com/subject/jgunsctx.html