OpenCV(Open Source Computer Vision Library)是一个基于BSD许可(开源)发行的跨平台计算机视觉库,主要用于图像和视频处理,可以运行在Linux、Windows、Android和MacOS操作系统上
OpenCV轻量级且高效:由一系列C函数和少量C++类构成,同时提供了Java、Python、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法
OpenCV使用C++语言编写,它的主要接口也是C++语言,但是依然保留了大量的C语言接口
在计算机视觉项目的开发中,OpenCV作为较大众的开源库,拥有了丰富的常用图像处理函数库,能够快速的实现一些图像处理和识别的任务
PIL/Pillow库使用、图像简介见文章:传送门
OpenCV官网:https://opencv.org/
官方文档参考:https://docs.opencv.org/4.x/
OpenCV库主要有4个模块:core、imgproc、highgui和videoio
OpenCV的应用场景:
安装:
pip install opencv-python
1)读取图像(不支持HTTP读取)
'''
cv2.imread(filename, flags)
- filename:图像文件路径
- flags:指定图像模式
- cv2.IMREAD_COLOR:默认,彩色(忽略alpha通道)模式
- cv2.IMREAD_GRAYSCALE:灰度模式
- cv2.IMREAD_UNCHANGED:完整图像(包含alpha通道)
'''
import cv2
import numpy as np
img = cv2.imread(r'C:\Users\cc\Desktop\th.jpg')
# 获取图像宽高
width, height, mode = img.shape
print(width, height)
OpenCV读取HTTP图像见文章:传送门
2)显示图像
'''
cv2.imshow(winname, mat)
cv2.waitKey(0)
cv2.destroyAllWindows()
- winname:图像名称
- mat:读取的图像对象
- cv2.waitKey(0):等待键盘输入(单位:ms),0表示无限等待,没有该操作图像会一闪而逝
- cv2.destroyAllWindows():销毁所有窗口
'''
cv2.imshow('th', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
3)保存图像
'''
cv2.imwrite(filename, img, params)
- filename:保存的图像文件名(带后缀)
- img:要保存的图像对象
- params:压缩级别,默认3
'''
cv2.imwrite('save.jpg', img)
4)图像缩放
'''
cv2.resize(src, dsize)
- src:要缩放的图像
- dsize:目标大小
'''
resized_img = cv2.resize(img, (200, 200))
cv2.imshow('resized_img', resized_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
5)图像裁剪
cropped_img = img[0: 40, 0: 40]
cv2.imshow('cropped_img', cropped_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
6)图像旋转
'''
cv2.getRotationMatrix2D(center, angle, scale):图像旋转
center:旋转中心 angle:旋转角度(逆时针) scale:比例
cv2.warpAffine(src, M, dsize):图像平移
src:要旋转的图像 M:矩阵 dsize:旋转后图像大小
'''
M = cv2.getRotationMatrix2D((width / 2, height / 2), 45, 1)
rotated_img = cv2.warpAffine(img, M, (width, height))
cv2.imshow('rotated_img', rotated_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
7)图像颜色空间转换
'''
cv2.