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模块内更多的采用了面向过程的编程方式。