OpenCV方法学习

一、博文说明:OpenCV还在学习中,内容会逐渐补充
二、有路过的大神,
三、话不多说,开搞
1、

  • imread:从内存中读取图像,此方法有两个参数;
  • imread(“参数1”,参数2);参数1为图片的地址,参数2为加载此图片为灰度图片、不改变图片、以RGB呈现的原图片;
  • 参数2:IMRAD_GRAYSCALE(0)、IMREAD_UNCHANGED(<0)、IMREAD_COLOR(>0),若参数2位置处没有,默认读入一张RGB图片

2、

  • cvtColor:修改图片的颜色空间,此方法有三个参数;
  • cvtColor(参数1,参数2,参数3); 参数1为即将修改颜色空间的图片,参数2为修改颜色空间后的图片,参数3为要修改成为什么颜色空间;
  • 参数3的选择:a、COLOR_BGR2HLS; b、COLOR_BGR2GRAY;c、COLOR_BGR2HSV等(其他的特定格式可查看OpenCV API);

3、

  • imwrite:把图片存入硬盘中,此方法有2个参数;
  • imwrite(“参数1”,参数2);参数1为操作人想将此图片存入的地址、存入后的名称、以及存入后的格式;参数2为即将存入的图片的名称;如:imwrite(“E:/Picture/Changed.png”,src);
  • 参数1中图片的格式可为jpg、png、tif等常见的图片格式;
  • 只有8位、16位的png、jpg、tif文件格式而且是单通道或者三通道的BGR图片才能使用此方式存储;
  • 在保存PNG图片时,可以保存透明通道的图片;
  • 可以指定压缩参数;

4、

  • namedWindow:创建窗口,可用此窗口显示你想显示的内容,此方法有两个参数;
  • nameWindow(“参数1”,参数2);参数1为创建的窗口的名称;参数2为窗口是否可修改尺寸;
  • 参数2可为:CV_WINDOW_AUTOSIZE,与图片的尺寸一致,不可认为修改窗口尺寸;
    CV_WINDOW_NORMAL,与QT集成时,可认为修改窗口大小;

5、

  • imshow:显示图片,此方法有2个参数;
  • imshow(“参数1”,参数2);参数1为创建窗口的名称,参数2位要显示的图片的名称;

6、waitKey:

  • 设置等待时间,此方法旨在代码生成图片后,等待操作人的指令来进行下一步操作;若没有此方法,生成图片成功的一瞬间就关闭窗口,我们看不到生成的图片

7、equalizeHist:

  • 直方图均衡化,直方图均衡化是通过拉伸像素强度分布来增强图像对比度的一种方法
    函数原型:void equalizeHist(InputArray src, OutputArray dst)
  • src:输入图片,dst:输出图片

8、calcHist:

  • 是OpenCV提供用于计算图像的直方图的函数
  • 函数原型:
void calcHist(const Mat* arrays, int narrays, const int* channels, InputArray mask, OutputArray
hist, int dims, const int* histSize, const float** ranges, bool uniform=true, bool accumulate=
false );
  • 参数解释
    * arrays。输入的图像的指针,可以是多幅图像,所有的图像必须有同样的深度(CV_8U or CV_32F)。同时一副图像可以有多个channes。
    * narrays。输入的图像的个数。
    * channels。用来计算直方图的channes的数组。比如输入是2副图像,第一副图像有0,1,2共 三个channel,第二幅图像只有0一个channel,
    * mask。掩码。如果mask不为空,那么它必须是一个8位(CV_8U)的数组,并且它的大小的和arrays[i]的大小相同,值为1的点将用来计算直方图。
    * hist。计算出来的直方图。
    * dims。计算出来的直方图的维数。
    * histSize。在每一维上直方图的个数。简单把直方图看作一个一个的竖条的话,就是每一维上竖条的个数。
    * ranges。表示每一个bin中上下界的范围,若uniform为默认true的话,该值为0-255,否则每一个ranges[i]都有histSize[i]+1个元素
    * uniform。每一个竖条的宽度是否相等,直方图是否均匀的标志。
    * accumulate。在多个图像时,是否累计计算像素值的个数。
    * 使用范例:
calcHist(
&channelsRGB[0],         //源图像,此处也可以是某图像分离出来的某个通道
1,                       //表示所画的直方图来源于多少个图像
0,                       //表示通道数,若是分离出来的通道,设置为零,单通道设置为1,多通道按需要
Mat(),                   //表示为空的Mat();
outputRGB[0],            //输出图片,若输入图片是通道数组,此处也要用通道数组
1,                       //表示画出的直方图是多少维的
hisSize,                 //指出每一维的bin的个数
&ranges                  //表示每一个bin中上下界的范围
);                

9、图像深度是指存储每个像素所用的位数,也用于量度图像的色彩分辨率。

  • 图像深度确定彩色图像的每个像素可能有的颜色数,或者确定灰度图像的每个像素可能有的灰度级数.它决定了彩色图像中可出现的最多颜色数,或灰度图像中的最大灰度等级。

  • 比如一幅单色图像,若每个像素有8位,则最大灰度数目为2的8次方,即256。一幅彩色图像RGB3个分量的像素位数分别为4,4,2,则最大颜色数目为2的4+4+2次方,即1024,就是说像素的深度为10位,每个像素可以是1024种颜色中的一种。

  • 例如:一幅画的尺寸是1024*768,深度为16,则它的数据量为1.5M。

  • 计算如下:102476816bit(位)=(102476816)/8Byte(字节)=[(102476816)/8]/1024KB=1536KB={[(102476816)/8]/1024}/1024MB=1.5MB。

10、normalize

  • 参考文章:https://blog.csdn.net/cosmispower/article/details/64457406
  • 将图像的像素值归一化
  • 函数原型:void normalize(InputArray src, InputOutputArray dst, double alpha=1, double beta=0, int norm_type=NORM_L2, int dtype=-1, InputArray mask=noArray() )
  • 参数介绍:
    参数说明
    src 输入数组;
    dst 输出数组,数组的大小和原数组一致;
    alpha 1,用来规范值,2.规范范围,并且是下限;
    beta 只用来规范范围并且是上限;
    norm_type 归一化选择的数学公式类型;
    dtype 当为负,输出在大小深度通道数都等于输入,当为正,输出只在深度与输如不同,不同的地方由dtype决定;
    mark 掩码。选择感兴趣区域,选定后只能对该区域进行操作。
  • norm_type取值说明(设输入数组中存在A1,A2,A3…An,P为得到的值):
    • NORM_L1:
      • 在这里插入图片描述
    • NORM_INF:
      *在这里插入图片描述
    • NORM_L2:
      • 在这里插入图片描述
    • NORM_MINMAX:
      • 在这里插入图片描述
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值