创建和显示窗口
创建显示窗口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()
整个任务就完成了。