0. OpenCV-Python的安装:

pip install opencv-python

有时会安装失败。可以下载匹配的whl文件来安装。

而要使用whl安装,需要先安装:wheel

pip install wheel

先确认需要的版本:

#python

Python 3.8.5 (default, Sep  3 2020, 21:29:08)

所以需要下载:

opencv_python-4.5.3.56-cp38-cp38-win_amd64.whl (34.9 MB)

pip install D:\Tools\opencv_python-4.5.3.56-cp38-cp38-win_amd64.whl

安装测试:

import cv2

没出错,则说明安装成功。

1. 图像的读取:

cv.imread(filename[, flags]) ->retval

从文件中(filename)读取图像。如果未能读取成功(由于文件丢失、权限不正确、格式不受支持或无效). 则返回None.

返回值--retval: 其值是读取到的图像。如果未能读取到图像,则返回None.

flags: 读取标志,用来控制读取文件的类型。

IMREAD_UNCHANGED 


Python:cv.IMREAD_UNCHANGED

如果设置,则按原样返回加载的图像(使用 alpha 通道,否则将被裁剪)。忽略 EXIF 方向。

IMREAD_灰度 


Python:cv.IMREAD_GRAYSCALE

如果设置,始终将图像转换为单通道灰度图像(编解码器内部转换)。

IMREAD_COLOR 


Python:cv.IMREAD_COLOR

如果设置,始终将图像转换为 3 通道 BGR 彩色图像。

IMREAD_ANYDEPTH 


Python:cv.IMREAD_ANYDEPTH

如果设置,当输入具有相应深度时返回16位/32位图像,否则将其转换为8位。

IMREAD_ANYCOLOR 


Python:cv.IMREAD_ANYOLOR

如果设置,则以任何可能的颜色格式读取图像。

IMREAD_LOAD_GDAL 


Python:cv.IMREAD_LOAD_GDAL

如果设置,请使用 gdal 驱动程序加载图像。

IMREAD_REDUCED_GRAYSCALE_2 


Python:cv.IMREAD_REDUCED_GRAYSCALE_2

如果设置,始终将图像转换为单通道灰度图像,图像大小减小 1/2。

IMREAD_REDUCED_COLOR_2 


Python:cv.IMREAD_REDUCED_COLOR_2

如果设置,始终将图像转换为 3 通道 BGR 彩色图像并且图像尺寸减小 1/2。

IMREAD_REDUCED_GRAYSCALE_4 


Python:cv.IMREAD_REDUCED_GRAYSCALE_4

如果设置,始终将图像转换为单通道灰度图像,图像大小减小 1/4。

IMREAD_REDUCED_COLOR_4 


Python:cv.IMREAD_REDUCED_COLOR_4

如果设置,始终将图像转换为 3 通道 BGR 彩色图像并且图像尺寸减小 1/4。

IMREAD_REDUCED_GRAYSCALE_8 


Python:cv.IMREAD_REDUCED_GRAYSCALE_8

如果设置,始终将图像转换为单通道灰度图像,图像大小减小 1/8。

IMREAD_REDUCED_COLOR_8 


Python:cv.IMREAD_REDUCED_COLOR_8

如果设置,始终将图像转换为 3 通道 BGR 彩色图像,并且图像尺寸减小 1/8。

IMREAD_IGNORE_ORIENTATION 


Python:cv.IMREAD_IGNORE_ORIENTATION

如果设置,则不要根据 EXIF 的方向标志旋转图像。

例1:

import cv2
 import syswindow_name = "Lesson1"
img = cv2.imread("../images/background.jpg", cv2.IMREAD_REDUCED_GRAYSCALE_2)
 #print(img.shape)
 if(img is None):
     print("Read Image Error")
     sys.exit(0)print(type(None))
 cv2.imshow(window_name, img)
cv2.waitKey(0)
cv2.destroyWindow(window_name)

注意:

当cv2.imread()未能读到数据时,可以用img is None来判断。

2. 图像的存储:

cv.imwrite(filename, img[, params]) ->retval

存储图像到指定文件中。

retval 返回值。保存成功,返回True. 保存失败,返回False.

filename:保存的文件名。包含扩展文件名(图像格式根据扩展文件名选择)

img: 图像数据。

params:保存类型参数。

IMWRITE_JPEG_QUALITY 


Python:cv.IMWRITE_JPEG_QUALITY

对于 JPEG,它可以是 0 到 100 的质量(越高越好)。默认值为 95。

IMWRITE_JPEG_PROGRESSIVE 


Python:cv.IMWRITE_JPEG_PROGRESSIVE

启用 JPEG 功能,0 或 1,默认为 False。

IMWRITE_JPEG_OPTIMIZE 


Python:cv.IMWRITE_JPEG_OPTIMIZE

启用 JPEG 功能,0 或 1,默认为 False。

IMWRITE_JPEG_RST_INTERVAL 


Python:cv.IMWRITE_JPEG_RST_INTERVAL

JPEG 重启间隔,0 - 65535,默认为 0 - 不重启。

IMWRITE_JPEG_LUMA_QUALITY 


Python:cv.IMWRITE_JPEG_LUMA_QUALITY

单独的亮度质量级别,0 - 100,默认为 0 - 不使用。

IMWRITE_JPEG_CHROMA_QUALITY 


Python:cv.IMWRITE_JPEG_CHROMA_QUALITY

单独的色度质量级别,0 - 100,默认为 0 - 不使用。

IMWRITE_PNG_COMPRESSION 


Python:cv.IMWRITE_PNG_COMPRESSION

对于 PNG,它可以是从 0 到 9 的压缩级别。更高的值意味着更小的尺寸和更长的压缩时间。如果指定,则策略更改为 IMWRITE_PNG_STRATEGY_DEFAULT (Z_DEFAULT_STRATEGY)。默认值为 1(最佳速度设置)。

IMWRITE_PNG_STRATEGY 


Python:cv.IMWRITE_PNG_STRATEGY

其中一个品种:: ImwritePNGFlags,默认为IMWRITE_PNG_STRATEGY_RLE。

IMWRITE_PNG_BILEVEL 


Python:cv.IMWRITE_PNG_BILEVEL

二进制级别 PNG,0 或 1,默认为 0。

IMWRITE_PXM_BINARY 


Python:cv.IMWRITE_PXM_BINARY

对于 PPM、PGM 或 PBM,它可以是二进制格式标志,0 或 1。默认值为 1。

IMWRITE_EXR_TYPE 


Python:cv.IMWRITE_EXR_TYPE

IMWRITE_EXR_COMPRESSION 


Python:cv.IMWRITE_EXR_COMPRESSION

覆盖 EXR 存储类型(默认为 FLOAT (FP32))

IMWRITE_WEBP_QUALITY 


Python:cv.IMWRITE_WEBP_QUALITY

覆盖 EXR 压缩类型(ZIP_COMPRESSION = 3 是默认值)

对于 WEBP,它可以是 1 到 100 的质量(越高越好)。默认情况下(没有任何参数)和质量高于 100 使用无损压缩。

IMWRITE_PAM_TUPLETYPE 


Python:cv.IMWRITE_PAM_TUPLETYPE

对于 PAM,将 TUPLETYPE 字段设置为为格式定义的相应字符串值。

IMWRITE_TIFF_RESUNIT 


Python:cv.IMWRITE_TIFF_RESUNIT

对于 TIFF,用于指定要设置的 DPI 分辨率单位;有关有效值,请参阅 libtiff 文档。

IMWRITE_TIFF_XDPI 


Python:cv.IMWRITE_TIFF_XDPI

对于 TIFF,用于指定 X 方向 DPI。

IMWRITE_TIFF_YDPI 


Python:cv.IMWRITE_TIFF_YDPI

对于 TIFF,用于指定 Y 方向 DPI。

IMWRITE_TIFF_COMPRESSION 


Python:cv.IMWRITE_TIFF_COMPRESSION

对于 TIFF,用于指定图像压缩方案。有关与压缩格式对应的整数常量,请参阅 libtiff。注意,对于深度为 CV_32F 的图像,仅使用 libtiff 的 SGILOG 压缩方案。对于其他支持的深度,可以通过该标志指定压缩方案;LZW 压缩是默认的。

IMWRITE_JPEG2000_COMPRESSION_X1000 


Python:cv.IMWRITE_JPEG2000_COMPRESSION_X1000

对于 JPEG2000,用于指定目标压缩率(乘以 1000)。该值可以从 0 到 1000。默认值为 1000。

获取图像的属性信息:

image.shape : image的shape.

若为灰度图。则为(行数,列数)

若为BGR,则为(行数,列数,通道数)

image.size: image的像素个数。

image.dtype: 图像的数据类型。

附录1:

Python 中的None

常量 None和 False 不同,它不表示 0,也不表示空字符串,而表示没有值,也就是空值.

None 有自己的数据类型:

print(type(None))
<class 'NoneType'>

None 常用于 assert、判断以及函数无返回值的情况.

附录2:

cv2模块。

关于import cv2

大多数OpenCV函数都在cv2模块内。 与cv2模块对应的cv模块代表传统版本的模块。此处cv2并不代表OpenCV2版本,而是指该模块引入了一个改善的API接口。

cv2模块内部采用了面向对象的编程方式。而cv模块内更多的采用了面向过程的编程方式。