首页 > 其他分享 >OpenCV3图像处理笔记

OpenCV3图像处理笔记

时间:2022-12-10 12:05:17浏览次数:43  
标签:函数 矩阵 cv2 笔记 OpenCV3 图像处理 flags 图像 imread

此笔记针对 Python 版本的 opencv3,c++ 版本的函数和 python 版本的函数参数几乎一样,只是矩阵格式从 ndarray 类型变成适合 c++ 的 mat 模板类型。注意,因为 python 版本的opncv只提供接口没有实现,故函数原型还是来自 c++版本的opencv,但是参数解释中的数据类型还是和 python 保持一致。

图像的载入:imread() 函数

函数原型:

Mat imread(const sting& filename, int flags=None)

参数解释:

  • ​filename​​​:图像的文件路径,​​sting​​ 字符串类型
  • ​flags​​​:载入标识,以何种方式读取图片,​​int​​​ 类型的 ​​flags​​。常用取值解释如下:
  • ​flags = 0​​:始终将图像转成灰度图再返回
  • ​flags = 1​​​:始终将图像转换成彩色图再返回,如果读取的是灰度图,则其返回的矩阵 ​​shape​​​ 将变为 ​​(height, width, 3)​
  • ​flags = 2​​​:如果载入的图像深度为 ​​16​​​ 位或者 ​​32​​​ 位,就返回对应深度的图像,否则,就转换为 ​​8​​ 位图像再返回。

总结:读取文件中的图片到 ​​OpenCV​​​ 中,返回 ​​Mat​​​ 或者 ​​ndarray​​​ 类型的矩阵,以彩色模式载入图像时,解码后的图像会默认以 ​​BGR​​ 的通道顺序进行存储。

cv2.imread()函数:

​python-opencv​​​ 库的 ​​imread​​​ 函数的 ​​flags​​​ 参数取值方式与 ​​C++​​​ 版有所区别。使用函数 ​​cv2.imread()​​ 读入图像,图像要么在此程序的工作路径,要么函数参数指定了完整路径,第二个参数是要告诉函数应该如何读取这幅图片,取值如下:

  • ​cv2.IMREAD_COLOR​​​ : 取值 ​​1​​,读入一副彩色图像。图像的透明度会被忽略,这是默认参数。
  • ​cv2.IMREAD_GRAYSCALE​​​ : 取值 ​​0​​,以灰度模式读入图像。
  • ​cv2.IMREAD_UNCHANGED​​​ : 取值 ​​-1​​,读入一幅图像,并且包括图像的 alpha 通道。

Instead of these three flags, you can simply pass integers 1, 0 or -1 respectively.

import numpy as np
import cv2
# Load an color image in grayscale
img = cv2.imread('messi5.jpg',0)

​opencv-python​​​ 库的读取图像函数 ​​cv2.imread()​​ 官方定义如下图。

OpenCV3图像处理笔记_灰度图

图像的显示:imshow()函数

函数原型:

void imshow(const string &winname, InputArray mat)

参数解释:

  • ​winname​​​:需要显示的窗口标识名称,​​string​​ 字符串类型
  • ​mat​​​:需要显示的图像矩阵,​​ndarray​​ numpy 矩阵类型

总结:​imshow​​ 函数用于在指定的窗口显示图像,窗口会自动调整为图像大小。

minMaxLoc 函数

函数 ​​cv :: minMaxLoc​​ 查找最小和最大元素值及其位置,返回的位置坐标是先列号,后行号(列号,行号) 。在整个数组中搜索极值,或者如果mask不是空数组,则在指定的数组区域中搜索极值。(只适合单通道矩阵)。函数原型:

CV_EXPORTS_W void minMaxLoc(InputArray src, CV_OUT double* minVal,
CV_OUT double* maxVal = 0, CV_OUT Point* minLoc = 0,
CV_OUT Point* maxLoc = 0, InputArray mask = noArray());

函数参数解释:

  • ​src​​:input single-channel array.
  • ​minVal​​:pointer to the returned minimum value; NULL is used if not required.
  • ​maxVal​​:pointer to the returned maximum value; NULL is used if not required.
  • ​minLoc​​:pointer to the returned minimum location (in 2D case); NULL is used if not required.
  • ​maxLoc​​:pointer to the returned maximum location (in 2D case); NULL is used if not required.

位深度的概念

  • 灰度图的位深度是 ​​16​​​,则其矩阵的元素类型为 ​​uint16​​​ ,彩色图其位深度一般是 ​​24​​​ ,红色占 ​​8​​​ 个位、蓝色占 ​​8​​​ 个位、绿色占 ​​8​​​ 个位,其矩阵的元素类型为 ​​uint8​​。
  • 位分辨率( ​​Bit Resolution​​​ )又称色彩深度、色深或位深度,在位图图像或视频视频缓冲区,指一个像素中,每个颜色分量(​​Red、Green、Blue、Alpha​​ 通道)的比特数。
  • ​matplotlib.image.imsave​​​ 将灰度图的矩阵保存为图像格式时,其默认保存的图像通道数为 ​​4​​​:​​RGBA​​​,其中 ​​RGB​​ 三个通道对应的二维矩阵数值完全一样。



标签:函数,矩阵,cv2,笔记,OpenCV3,图像处理,flags,图像,imread
From: https://blog.51cto.com/armcvai/5927416

相关文章

  • 学习笔记281—word不能插入公式
    点击辅助功能在文档中点击状态栏下辅助功能。点击转换在辅助功能界面,点击转换。点击公式点击公式,这样就可以插入公式。END方法/步骤2点击文件在文档界面,点击文件。点击信息......
  • 替罪羊树学习笔记
    前言替罪羊树(ScapegoatTree,SGT)是由ArneAndersson提出的一种非旋转自平衡树,可以做到单次均摊\(O(\logn)\)的时间复杂度内实现平衡树的所有操作(时间复杂度基于势能......
  • html学习笔记二 表单标签
    <!DOCTYPEhtml><htmllang="en"><head>  <metacharset="UTF-8">  <metahttp-equiv="X-UA-Compatible"content="IE=edge">  <metaname="viewport"content=......
  • 算法学习笔记(37)——扩展欧几里得算法
    扩展欧几里得算法扩展欧几里得算法欧几里得算法/辗转相除法(Euclideanalgorithm)裴蜀定理(Bézout定理)扩展欧几里得算法(ExtendedEuclideanalgorithm)求解线性同余方......
  • 算法学习笔记(36)——快速幂
    快速幂快速幂快速幂快速幂求逆元快速幂用于快速(在\(O(\logk)\)的时间复杂度之内)求出\(a^k\bmodp\)的结果,\(1\lea,p,k\le10^9\),核心是反复平方法。算......
  • 算法学习笔记(35)——欧拉函数
    欧拉函数欧拉函数用公式求欧拉函数用筛法求欧拉函数欧拉函数:在数论中,对正整数\(N\),欧拉函数\(\varphi(N)\)是小于等于\(N\)的正整数中与\(N\)互质的数的......
  • 算法学习笔记(34)——约数
    约数约数约数的定义算数基本定理的推论正约数集合正约数个数正约数之和一、试除法求约数二、约数个数三、约数之和四、最大公约数欧几里得算法更相减损......
  • 算法学习笔记(33)——质数
    质数质数一、试除法判定质数二、分解质因数三、筛质数3.1朴素筛法3.2埃氏筛法(Eratosthenes筛法)3.3欧拉筛法(线性筛法)一、试除法判定质数质数的定义:若......
  • 算法学习笔记(43)——背包问题
    背包问题背包问题0/1背包问题完全背包多重背包二进制拆分法分组背包背包是线性DP中一类重要而特殊的模型,本文将其作为单独一部分进行总结整理。0/1背......
  • 算法学习笔记(42)——博弈论
    博弈论博弈论NIM博弈台阶-Nim游戏公平组合游戏ICG有向图游戏Mex运算SG函数有向图游戏的和定理集合-Nim游戏拆分-Nim游戏NIM博弈给定\(n\)堆物品,第......