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的话就表示的是按任意键关闭窗口

扫描二维码关注公众号,回复: 11439369 查看本文章

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入门教学

猜你喜欢

转载自blog.csdn.net/qq_45037146/article/details/107558843