介绍

OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。

我是在bilibili上看《Python 人脸识别——尚学堂》视频,接触到的OpenCV,接下来是学习的内容。

1、导入OpenVC模块,读取图片

1
2
3
4
5
6
7
#导入模块
import cv2 as cv
#读取图片
#img是一个numpy.ndarray对象,默认是以BGR三通道读取图片数据(三维数组)
img=cv.imread('test.jpg') #路径不能有中文
#以灰度图像方式读取图片数据(二维数组)
img_gray = cv2.imread("test.jpg",cv2.IMREAD_GRAYSCALE)

2、将图片进行灰度转换

1
2
#将其转换为灰度的二维数组数据
gray_img=cv.cvtColor(img,cv.COLOR_BGR2GRAY)

3、显示图片

1
2
3
4
5
6
#显示图片
cv.imshow('gray_img', img)
#等待键盘键入 单位毫秒 0=无限等待
cv.waitKey(3000)
#释放内存 由于OpenCV底层是C++编写的
cv.destroyAllWindows()

4、图片保存

1
cv.imwrite('gray_test.jpg', gray_img)

5、修改图片尺寸

1
2
3
4
5
6
img=cv.imread('test.jpg')
cv.imshow('old_img',img)
print('原来图片的形状', img.shape)
resize_img=cv.resize(img, dsize=(626, 418))
cv.imshow('resize_img', resize_img)
print('修改后图片的形状', resize_img.shape)

6、绘制矩形

1
2
3
4
5
cv.rectangle(img,(x,y),(x+w,y+h), color=(0,255,0),  thickness=2)
#rectangle(img, pt1, pt2, color, thickness)
# img 图像. pt1 矩形的一个顶点。 pt2 矩形对角线上的另一个顶点
# color 线条颜色 (RGB) 或亮度(灰度图像 )。
# thickness 组成矩形的线条的粗细程度。取负值时(如 CV_FILLED)函数绘制填充了色彩的矩形。

7、绘制圆

1
2
cv.circle(img,center=(x,y),radius=r,color=(0,0,255),thickness=2)
# center元组指圆心的坐标, radius是半径