读取、显示、保存:
import cv2
a = cv2.imread('E:/picture/lena.jpg',0) #0为灰色,1为彩色,-1包含透明通道的彩色图
cv2.imshow('lena',a) #此处必须有个命名,可以为空 eg:cv2.imshow('',a)
cv2.waitKey(0) #暂停多少毫秒,0表示一直暂停
cv2.imwrite('C:/Users/10611/Desktop/lena.jpg',a) #将a输出到桌面上
生成图像输出
import cv2
import numpy as np
width = 256
height = 256
img = np.zeros([width, height, 3], dtype=np.uint8)
for i in range(width):
for j in range(height):
for k in range(3):
img[i,j,k]=i
cv2.imshow('A',img)
cv2.waitKey(0)
如果控制RGB三通道的值是一样的,输出出来的图像就是全黑的,因为同等的红绿蓝加起来是黑色。
打开摄像头:
实时显示摄像头
# 打开摄像头并灰度化显示
import cv2
capture = cv2.VideoCapture(0)
while(True):
ret, frame = capture.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # 将这帧转换为灰度图
cv2.imshow('frame', gray)
if cv2.waitKey(1) == ord('q'):
break
整体理解为:通过read读取一帧,show来显示当前帧,waitKey(1)将确保在每毫秒的间隔后生成一个新帧,通过while来进行遍历。如果我们将waitkey里面的参数改成500,即500ms刷新一次,就会发现视频帧率变低了。
1、cv2.VideoCapture()函数:
cap = cv2.VideoCapture(0)
VideoCapture()中参数是0,表示打开笔记本的内置摄像头。
cap = cv2.VideoCapture("…/1.avi")
VideoCapture("…/1.avi"),表示参数是视频文件路径则打开视频。
2、cap.isOpened()函数:
返回true表示成功,false表示不成功
3、ret,frame = cap.read()函数:
cap.read()按帧读取视频,ret,frame是获cap.read()方法的两个返回值。其中ret是布尔值,如果读取帧是正确的则返回True,如果文件读取到结尾,它的返回值就为False。frame就是每一帧的图像,是个三维矩阵(即RGB)。
所以把代码改成这样就是彩色图像:
import cv2
capture = cv2.VideoCapture(0)
while(True):
ret, frame = capture.read()
cv2.imshow('frame', frame)
if cv2.waitKey(1) == ord('q'):
break
4、cv2.cvtColor()用来转换颜色,这里将彩色图转成灰度图。
播放本地视频
# 播放本地视频
capture = cv2.VideoCapture('demo_video.mp4')
while(capture.isOpened()):
ret, frame = capture.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) #灰度显示
cv2.imshow('frame', gray)
if cv2.waitKey(30) == ord('q'):
break
录制视频
import cv2
cap=cv2.VideoCapture(0)
fourcc=cv2.VideoWriter_fourcc(*'MJPG')
outfile=cv2.VideoWriter('output.avi',fourcc,25.,(640,480))
while(cap.isOpened()):
ret,frame=cap.read()
if ret: #如果成功捕获一帧
outfile.write(frame) #输出这一帧
cv2.imshow('frame',frame) #展示当前帧
if cv2.waitKey(1)==ord('q'): #控制帧率和是否结束
break
else: #如果没有成功捕获则退出
break
1、cv2.VideoWriter_fourcc():表示编码方式,有DIVX , XVID , MJPG , X264 , WMV1 , WMV2等等(XVID是最好的,MJPG是高尺寸视频,X264得到小尺寸视频)
2、cv2.VideoWriter():有四个参数:
输出的文件名,如'output.avi'
编码方式FourCC码(1里面定义的)
帧率FPS
要保存的分辨率大小
3、 outfile.write():通过此方法输出获取的当前帧
参考:
python中VideoCapture(),read(),waitKey()的使用_hanshanbuleng的博客-CSDN博客