1. 1 OpenCV简介

OpenCV的全称是 Open Source Computer Vision Library, 是一个跨平台的计算机视觉库。

OpenCV是英特尔公司发起并参与开发的,以BSD许可证授权发行的,可以在商业和研究领域中免费使用。OpenCV可用于开发实时的图像处理、计算机视觉以及模式识别程序。OpenCV-pytho是OpenCV的Python API, 集成了python语言和C++语言的最优特征,致力于支持python解决传统计算机视觉问题。

  1. 2安装OpenCV

在python中安装OpenCV十分便捷,可以直接使用:

pip install opencv-python 或  conda install opencv-ppython

注意:安装的时候,默认安装的是最新版本的,如果有项目要求的话,可以指定特定的版本,可以使用:

pip install opencv-python== ...(具体的版本)

在成功安装OpenCV之后,可以在python编译器中输入如下的内容,查看是否安装成功:

我这边显示的是opencv的版本是4.55,说明已经安装成功。

  1. 3 图片的读取、显示和保持

1 图像读取

使用OpenCV读取图片文件,可以使用函数:

cv2.imread(filepath, flags)

 例如使用:

image = cv2.imread('test.jpg')

该函数共接受两个输入,需要读入图片的完整路径和读入图片的方式,常用的方式包括以下三种

  • cv2.IMREAD_COLOR:这个是 默认参数,读入的是彩色的图片,在此过程中忽略了alpha通道
  • cv2.IMREAD_GRAYSCALE: 读入灰度图片
  • cv2.IMREAD_UNCHANGED: 顾名思义,读入的是完整的图片,包括alpha通道

OpenCV读取图片后返回的是一个numpy数组,对于彩色图像,数组是三维数组,其形状是 (shape)为(图像的高,图像的宽,3),在这其中3代表的是图片的RGB三个通道,由于OpenCV在存储彩色图象时,默认的通道顺序为BGR,所以在进行图像处理的时候需要注意不要使用错误的通道顺序。

2 图像显示

使用OpenCV显示图片文件,可以使用函数:

cv2.imshow(wname, img)

 例如使用:

cv2.imshow('test_image', image)

在多数使用的时候,我们会将上述的API搭配

cv2.waitKey() 和 cv2.destroyALLWindows()使用,

 waitKey顾名思义,就是等待键盘输入,而destroyALLWindows就是关闭所有已经显示的窗口,搭配这两个API后即可实现:显示一张图片,并在键盘输入任意值后关闭图片的效果。

import cv2
image_bgr = cv2.imread('OIP.jpeg', cv2.IMREAD_COLOR)
image_gray = cv2.imread('OIP.jpeg', cv2.IMREAD_GRAYSCALE)
cv2.imshow('BGR', image_bgr)
cv2.imshow('gray', image_gray)
cv2.waitKey()
cv2.destroyALLWindows()

  3 图像保持

使用OpenCV显示图片文件,可以使用函数cv2.imwrite(file, img, num), 例如使用

cv2.imwrite('test_image2', image_bgr)

 这个API有三个参数:第一个参数是要保存的文件路径,第二个参数是要保存的图像。第三个参数是可选参数,它针对特定的格式:对于JPEG,这个图片的后缀表示的是图像的质量,用0-100的整数表示,默认是95,第三个参数表示的是压缩级别,默认的是3。

图像几何变换

  1.  图像的缩放

图像的缩放其实就是改变图像的大小和形状,可以用下列的API来实现。

image = cv2.resize(src, dsize[, dst[, fx[, interpolation]]])

这个图像缩放的API的参数是非常多的,但其实也是很好理解的,下面给出这些API参数的解释:

  • Image: 输出图像
  • src: 输入图像
  • dsize: 输出图像的尺寸
  • fx: 横坐标缩放比例
  • fy: 纵坐标缩放比例
  • interpolation: 缩放方式

在这些参数中,输入、输出图像都是比较好理解的,输出图像的尺寸dsize是(宽,高), fx,fy一般可直接使用0-1的缩放比例,值得注意的一点是,在给定dsize时,就不需要另外输入缩放的比例了,而想使用缩放比例时,dsize应输入None。缩放的方式一般不填,直接使用默认值即可,其他的缩放方式如下:

  • INTER_NEAREST 最近邻插值
  • INTER_LINEAR 双线性插值
  • INTER_AREA 使用像素区域关系进行重采样。它可能是图像抽取的首选方法,因为它会产生无纹理的结果。但是当图像缩放是,他类似于INTER_NEAREST方法。

均值滤波

均值滤波是最简单的滤波器,它取卷积核区域下所有像素的平均值并替换中心元素,均值滤波的代码如下:

cv2.blur(image, (...,...))# 原图,核心的大小

中值滤波

中值滤波器是一种非线性滤波器,它的基本原理是:选择待处理像素的一个邻域中各像素值的中值来代替待处理的像素。它能使某像素的灰度值与周围邻域内的像素比较接近,从而消除一些孤立的噪声点,所以中值滤波器能够很好的消除噪声的。

更多推荐

OpenCV的基础入门