图像,视频的加载与展示

创建和显示窗口

创建显示窗口API

namedWinndow()创建窗口

imshow() 显示窗口

destroyALLWindows()销毁窗口

resizeWindow 修改窗口大小

waitkey()等待显示窗口的时常 单位ms 

创建显示窗口实战代码

import cv2

# cv2.namedWindow('new',cv2.WINDOW_AUTOSIZE) #此时的窗口大小不能变化
cv2.namedWindow('new', cv2.WINDOW_NORMAL)  # 此时可以改变窗口大小
cv2.resizeWindow('new', 920, 480)

cv2.imshow('new', 0)
key = cv2.waitKey(0)  # 建立的窗口所有的键盘和鼠标的事件都要经过waitkey来接收  (delay)毫秒
if (key == 'q'):
    exit()

cv2.destroyAllWindows()

 

显示加载图片

显示加载图片API

imread(path,flag) 

显示加载图片实战代码

import cv2

cv2.namedWindow('img', cv2.WINDOW_AUTOSIZE)
img = cv2.imread("E:\\pycharm\\PycharmFile\\opencv\\MM\\preview.jpg")

while True:
    cv2.imshow('img', img)

    key = cv2.waitKey(0)  # waitkey返回值是一个16位的整型,返回值为当前键盘按键值

    if (key & 0xFF == ord('q')):  # 由于ASCII是8位的,那一个F代表16位,两个F代表的8位
       
        cv2.destroyAllWindows()

显示结果:

保存图片 

保存图片API

imwrite(name,img)

name : 要保存的文件名

img:是Mat类型

保存图片实战代码

    if (key & 0xFF == ord('q')):  # 由于ASCII是8位的,那一个F代表16位,两个F代表的8位
        break
    elif (key & 0xFF == ord('s')):
        cv2.imwrite("E:\\pycharm\\PycharmFile\\opencv\\MMmm.png", img)  # 后面这个img就是前面imread的img
        break
    else:
        print(key)

代码就是在第二部分的的代码上进行部分修改。结果就是在设置的文件夹下保存了之前读取的img。

利用摄像头采集视频

 视频采集API

VideoCapure()其中输入设备号,默认摄像头为0,此时就打开摄像头了

cp.read()将摄像头采集的视频一帧一帧读出来

cap.release()释放掉capure的资源

read有两个返回值 第一个返回值是状态值,读到视频帧的是True ;第二个值为视频帧。

视频采集实战代码

import cv2

# 创建窗口
cv2.namedWindow('video', cv2.WINDOW_AUTOSIZE)

cap = cv2.VideoCapture(0)

# 摄像头是否为打开状态
while cap.isOpened():
    # while True:
    # 从摄像头读取数据
    ret, frame = cap.read()

    if ret == True:

        # 将视频在窗口中显示
        cv2.imshow('video', frame)
        # 将窗口设定为指定大小
        cv2.resizeWindow('video', 640, 360)  # 但是这个只是窗口变小了,保存的视频还是640 480

        # 等待键盘事件,如果为q 退出  此时waitkey设置的值就是类似采集的帧率
        key = cv2.waitKey(1)
        if (key & 0xFF == ord('q')):
            break

    else:
        break

cap.release()

cv2.destroyAllWindows()

采集结果:就不放给大家看了。

但仅仅是读取有些单调,我们可以使用imwrite将读取的视频保存起来。

读取视频文件

在学完利用摄像头采集视频后了解其实文件读取的就是视频每一帧,那我们也可以根据已经有的文件进行读取视频帧。

读取视频文件API

读取视频文件API与视频采集API相同,都是利用VideoCapure。不同点在于,使用摄像头采集,我们参数选择的是从0开始的设备号,而读取视频文件参数的是文件的地址信息。

读取视频文件实战代码

cap=cv2.VideoCapture('1-1-1 Python介绍.mp4')

就这样,VideoCapure后的参数改为了文件地址。

此时可能会出现一个问题,视频的速度与原视频可能不同。这个是由于waitkey参数设置的问题。

打开文件的属性,观察帧率。

接着根据20帧每秒,计算每帧的大概时间。使用1000除以帧率得到每帧时间(单位是毫秒)。就可以去waitkey中修改时间了。

视频录制

在上面的知识中,我们学会了如何利用摄像头采集视频。此节就是学习如何将采集到的视频进行保存。

视频录制API

VideoWriter:需要的参数有 

(1)输出文件

(2)指定多媒体文件的格式(VideoWriter——fourcc)

(3)帧率

(4)分辨率

write

relea

视频录制实战代码

在利用摄像头采集视频代码的基础上,再while循环外先设置好我们要录制视频的相关参数。代码如下。

fourcc = cv2.VideoWriter_fourcc(*'XVID')
vw = cv2.VideoWriter('./xixi.avi', fourcc, 25, (640, 480))

此时我们看见分辨率是(640,480),需要注意的是这个分辨率需要根据采集的摄像头来进行设置。

接下来对于采集到的数据写入,就需要再while循环中使用write。代码如下。

vw.write(frame)

最后再while循环外释放最开始设置的VideoWriter,代码如下。

vw.release()

整个任务就完成了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值