opencv新手入门----图像的基本操作(一)
文章目录
0.前言
本文的作者也是刚刚才开始学习opencv
基本上也等于是自己学习的一个记录
使用的是python3.6.3, anaconda3-5.2.0,opencv-python3.4.1.15
所有的代码我都是用notebook写的
对于我来说notebook很方便
因为我实在也不需要用ide去单步跟踪debug
接下来就是简单的介绍一下图像的基本操作
1.图像的读取与显示
1.1. 导入我们需要的库
import cv2
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
对于%matplotlib inline 这一句代码
官方的定义是: IPython有一组预先定义好的所谓的魔法函数(Magic Functions),你可以通过命令行的语法形式来访问它们。可见“%matplotlib inline”就是模仿命令行来访问magic函数的在IPython中独有的形式。
在我上网查了一些资料后是这样说的:
其作用就是在你调用plot()进行画图或者直接输入Figure的实例对象的时候,会自动的显示并把figure嵌入到console中。
如果不加上%maplotlib inline 的话,每次figure的显示都需要plt.show();
1.2.图片的读取
img = cv2.imread('dog.jpg')
读取图片就只有这么简短的一句话
值得一说的是,我这里的图片和代码都在同一文件夹(也就是同一目录)下,如果不在的话要加上绝对路径或者相对路径
1.3.图片的显示
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
在这里讲一讲"cv2.imshow"吧
两个参数其实很显而易见
第一个是你显示窗口的名字
第二个就是你要显示的图片
我们前面读取的时候变量名是img,所以我们这里也就是img
然后"cv2.waitKey(0)"这一句其实表示的是显示时间,单位是毫秒
一般情况下我们都设置为0
为0的话就表示的是按任意键关闭窗口
2.视频的读取与显示
当我们学会了图片的读取与显示之后,其实视频也就很好理解了
视频不过就是很多张的图片组成的,所以接下来我们看看实际操作
2.1.导入所需要的库
import cv2
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
2.2.读取视频
vc = cv2.VideoCapture('test.mp4')
2.3.检查视频的读取是否正确
if vc.isOpened():
oepn, frame = vc.read()
else:
open = False
但是也可以跳过这一步
2.4.播放视频
while open:
ret, frame = vc.read()
if frame is None:
break
if ret == True:
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.imshow('result', gray)
if cv2.waitKey(100) & 0xFF == 27:
break
vc.release()
cv2.destroyAllWindows()
简单的解释一下
视频的播放其实就是图片的连贯展示
它是将视频里的每一帧图片按固定时间间额展示出来
所以给你的感觉会是一个视频
vc.read()返回了两个参数,frame主要是用于我们判断是否已经播放结束了
如果frame为null了,意味着已经读取到了这个视频的最后一帧
然后在这里有一句"gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)"
这其实是把读取到的每一帧图片都转换成了灰度图
其实从函数名就很好理解COLOR_BGR2GRAY
因为opencv中的图像通道是BGR这样的顺序,而我们常见的是RGB
这里的
if cv2.waitKey(100) & 0xFF == 27:
break
其实设定的就是图片的显示间隔,单位也是毫秒
后面的0xFF设定的是关闭的键,也就是esc
你也可以上网查询其余键的键值
这样就可以设定为任意一个键去break
3.完整代码
#图片的读取和显示
import cv2
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
img = cv2.imread('dog.jpg')
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
#视频的读取和显示
import cv2
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
vc = cv2.VideoCapture('test.mp4')
if vc.isOpened():
oepn, frame = vc.read()
else:
open = False
while open:
ret, frame = vc.read()
if frame is None:
break
if ret == True:
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.imshow('result', gray)
if cv2.waitKey(100) & 0xFF == 27:
break
vc.release()
cv2.destroyAllWindows()
4.写在最后
作者也是跟着别人的教学视频一步一步来的
这里放上原视频教学作者的传送门:
opencv入门教学