opencv 简易入门概述

2019-08-22  本文已影响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 ,

上一篇下一篇

猜你喜欢

热点阅读