OpenCV
是一个影像处理的Python
包,可以用来做很多与影像处理相关的事情,如图片剪裁处理、手势识别、文档文字检测、标记影像中物体的运动路线等等。本教程适用于像博主本人一样的新手,快速上手OpenCV
,实现一些小项目。
1 导入、展示图像
1.1 图片
使用OpenCV,需要在Python中安装OpenCV的包,命令行的安装代码为:
$ pip install opencv-python
下面我们导入本小结需要使用的OpenCV
的包,注意这里导入的是cv2
,而不是opencu-python
。
我们使用cv2.imread()
读取图片,括号中为图片所在的地址,我们把读取图片的结果保存到img
中。如果直接打印img
,我们得到的是一个108014403的向量,分别对应图片的长、宽和RGB通道数。cv2.imshow('img',img)
,用来展示图片,第一个参数表示展示图片的名称,第二个参数表示图片名。cv2.waitKey(10)
表示图片会展示10毫秒的时间。
import cv2
img = cv2.imread('Pictures/Folwers.jpg')
print(img.shape)
cv2.imshow('img',img)
cv2.waitKey(10)
cv2.resize()
可以帮助我们修改图片的大小。dsize
表示图片的长度和宽度,均为0时表示不做修改。fx
和fy
表示将图片的比例变为原来的多少倍。如下所示,以下两种写法得到的图片是一样的。
imgSize1 = cv2.resize(img,dsize=(0,0),fx=0.2,fy=0.2)
print(imgSize1.shape)
imgSize2 = cv2.resize(img,dsize=(288,216))
print(imgSize2.shape)
1.2 影像
cv2.VideoCapture
可以用来存入视频文件。视频文件会被分割成随时间改变的一帧帧图片。它会回传两个参数,第一个参数是下一时刻图片的代码,第二个参数是图片的内容。cv2.waitKey(10) == ord('q')
表示当键盘输入q
时,视频会退出播放。
# video = cv2.VideoCapture(0) #打开电脑的摄像头
video = cv2.VideoCapture('Videos/test.mp4')
while True:
nextf, frame = video.read()
if nextf:
frame = cv2.resize(frame, (0, 0), fx=0.5, fy=0.5)
cv2.imshow('video', frame)
else:
break
if cv2.waitKey(10) == ord('q'):
break
2 拼接图片、视频
本节中,我们尝试随机生成一张图片,并把这张图片与现有的图片和视频拼接在一起。
import cv2
import numpy as np
import random
## 导入图片
img = cv2.imread('