欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

荐 opencv新手入门----图像的基本操作(一)

程序员文章站 2022-05-13 11:46:19
文章目录0.前言1.图像的读取与显示2.视频的读取与显示3.完整代码4.写在最后0.前言本文的作者也是刚刚才开始学习opencv基本上也等于是自己学习的一个记录使用的是python3.6.3, anaconda3-5.2.0,opencv-python3.4.1.15所有的代码我都是用notebook写的对于我来说notebook很方便因为我实在也不需要用ide去单步跟踪debug接下来就是简单的介绍一下图像的基本操作1.图像的读取与显示1.1. 首先是直接导入我们需要的库import...

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"吧
两个参数其实很显而易见
第一个是你显示窗口的名字
荐
                                                        opencv新手入门----图像的基本操作(一)
第二个就是你要显示的图片
我们前面读取的时候变量名是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

荐
                                                        opencv新手入门----图像的基本操作(一)

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

本文地址:https://blog.csdn.net/qq_45037146/article/details/107558843