基于python的数字图像处理--学习笔记(一)

基于python的数字图像处理--学习笔记(一)

  • 图像处理python常用库和函数
    • 1、opencv-python库
    • 2、opencv-python常用函数

图像处理python常用库和函数

使用opencv-python读取图片数据。并使用numpy库对图片的矩阵数据进行变换处理,实现平移旋转等操作。

1、opencv-python库

OpenCV用C++语言编写,它的主要接口也是C++语言,但是依然保留了大量的C语言接口。 (CV:Computer Vision,计算机视觉)。此外,OpenCV还提供了Java、python、cuda等的使用接口、机器学习的基础算法调用。

  • 安装opencv-python库
    1)普通安装
    pip install opencv-python
    2)针对cv2中缺少的部分函数,可以采用扩展安装扩展安装
    pip install opencv-contrib-python
    如果已经安装OpenCv2,则需要先卸载 再安装
    pip uninstall opencv-python
  • 在python中引用opencv-python库
    需注意,虽然库的名称是opencv-python,但是引用库时应引用cv2
    import cv2
    同样,在pycharm中安装库时应选择opencv-python库,而不是cv2。基于python的数字图像处理--学习笔记(一)_第1张图片

2、opencv-python常用函数

1、 cv2.imread(filepath,flags) #读入一张图像

  • filepath:要读入图片的完整路径 flags:读入图片的标志
  • flag有如下参数
    cv2.IMREAD_COLOR:默认参数,读入一副彩色图片,忽略alpha通道
    cv2.IMREAD_GRAYSCALE:读入灰度图片
    cv2.IMREAD_UNCHANGED:顾名思义,读入完整图片,包括alpha通道
  • alpha通道,又称A通道,是一个8位的灰度通道,该通道用256级灰度来记录图像中的透明度复信息,定义透明、不透明和半透明区域,其中黑表示全透明,白表示不透明,灰表示半透明

2、 cv2.imshow(wname,img) #显示图像

  • wname:是显示图像的窗口的名字
  • img:是要显示的图像(imread读入的图像),窗口大小自动调整为图片大小
  • imshow函数常和 cv2.waitKey(n)共同使用,如果函数以imshow结尾,运行结果图片会闪退。

3、 cv2.waitKey(n) #按键等待函数

  • waitKey() 函数的功能是不断刷新图像 , 频率时间为输入参数n, 单位为ms ,默认值为1ms。如参数等于1000,则图像保持1s。
  • 参数为0表示无限等待
  • 返回值为当前键盘按键值
  cv2.imshow('image',img)
  cv2.waitKey(0) #等待键盘输入,单位为毫秒,即等待指定的毫秒数看是否有键盘输入,若在等待时间内按下任意键则返回按键的ASCII码,程序继续运行。
  #若没有按下任何键,超时后返回-1。参数为0表示无限等待。不调用waitKey的话,窗口会一闪而逝,看不到显示的图片。
  cv2.destroyAllWindow() #销毁所有窗口
  cv2.destroyWindow(wname) #销毁指定窗口

4、cv2.imwrite(file,img,num) #保存一个图像

  • file:第一个参数是要保存的文件名
  • img:第二个参数是要保存的图像
  • num:可选的第三个参数,针对特定的格式:
    对于JPEG,其表示的是图像的质量,用0 - 100的整数表示,默认95;
    对于png ,第三个参数表示的是压缩级别。默认为3.
  • 注意:
    cv2.IMWRITE_JPEG_QUALITY类型为 long ,必须转换成 int
    cv2.IMWRITE_PNG_COMPRESSION, 从0到9 压缩级别越高图像越小。
cv2.imwrite('1.png',img, [int( cv2.IMWRITE_JPEG_QUALITY), 95])
cv2.imwrite('1.png',img, [int(cv2.IMWRITE_PNG_COMPRESSION), 9])

5、cvtColor(Mat src, Mat dst, int code) #颜色空间转换函数
可以实现RGB颜色向HSV,HSI等颜色空间转换,也可以转换为灰度图。

  • src:表示来源的矩阵。

  • dst:表示目的地的矩阵。

  • code:表示转换类型的整数代码
    COLOR_RGB2GRAY
    COLOR_RGB2HSV
    COLOR_RGB2BGR

  • dstCn:用于指定目标图像的通道数,如果指定的值是默认值0,那么通道数将由输入图像和颜色转换码决定。可以不写。

    参考:opencv学习笔记(三)颜色转换 cvtColor

6、img.copy() #图像复制

7、cv2.resize(image, image2,dsize) #图像缩放
输入原始图像,输出新图像,图像的大小

8、cv2.flip(img,flipcode) #图像翻转。

  • flipcode控制翻转效果:
    flipcode = 0:沿x轴翻转;
    flipcode > 0:沿y轴翻转;
    flipcode < 0:x,y轴同时翻转

9、cv2.getRotationMatrix2D(center,angle,scale) #图像翻转。

  • center:源图像中的旋转中心。
  • angle:以度为单位的旋转角度。 正值表示逆时针旋转(假设坐标原点为左上角)
  • scale:各向同性比例因子,即缩放比例
    参考:getRotationMatrix2D函数

10、 cv2.convertScaleAbs(depth_image, alpha) 通过线性变换将数据转换成8位[uint8]
通过线性变换将数据转换成8位[uint8]

  • 公式为:有效距离*alpha=255。

  • 如果计算后的值大于255,则将其取为255(8位最大值)。

    参考:python opencv 4.1.0 cv2.convertScaleAbs()函数 (通过线性变换将数据转换成8位[uint8])
    参考:【图像处理】——灰度变换心得(cv2.normalize规范化0-255,cv2.convertScaleAbs(new_img)转为8位图))

11、 cv2.normalize(array,None,0,255,cv2.NORM_MINMAX) 将图片的值进行范围调整

基于python的数字图像处理--学习笔记(一)_第2张图片

  • X ^ 表示矩阵中任意一点归一化之后的值

  • x 表示矩阵中的所有原始值

  • min,max 分别代表矩阵中的最大值和最小值

  • max′,min′ 分别表示放缩的目标范围中的最大和最小值

  • 除此之外,还有其他的归一化和放缩的选项,例如:
    cv2.NORM_INF:归一化数组的(切比雪夫距离)L∞范数(绝对值的最大值)
    cv2.NORM_L1 : 归一化数组的(曼哈顿距离)L1-范数(绝对值的和)
    cv2.NORM_L2: 归一化数组的(欧几里德距离)L2-范数

    参考:将图片的值进行范围调整 cv2.normalize()
    参考:【图像处理】——灰度变换心得(cv2.normalize规范化0-255,cv2.convertScaleAbs(new_img)转为8位图))

参考:cv2库(OpenCV,opencv-python)的简介、安装、使用方法(常见函数、方法等)最强详细攻略

参考:【python】库丨opencv-python丨

你可能感兴趣的:(数字图像处理,python,opencv,开发语言)