前言
刚开始学习OpenCV,先学习了图像和视频的基本操作,这里分享一下。
图像
显示图像,并把图像转换为灰度图:
import numpy as np
import cv2
from matplotlib import pyplot as plt
img = cv2.imread('E:\\jupyter_project\\openCV-python\\image\\reba.jpeg',0)
cv2.namedWindow('window1',cv2.WINDOW_NORMAL)
cv2.imshow('window1',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
保存图像:
cv2.imwrite('E:\\jupyter_project\\openCV-python\\reba.png',img)
视频
从计算机摄像头读取视频:
import numpy as np
import cv2
cap = cv2.VideoCapture(0) #videocapture 当参数为0或者1时,用来打开摄像头
while(True):
ret,frame = cap.read() # read函数返回两个值,第一个值是一个布尔值,代表有没有成功捕捉到图像,第二个值就代表捕捉到的这一帧图像
gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY) # cvt是convert也就是转换的缩写,所以就是转换颜色的意思,参数中第一个是要转换的图像,第二个是要转换成的颜色风格
cv2.imshow('frame',gray)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release() #顾名思义,release是释放的意思,这里当然是释放摄像头了
cv2.destroyAllWindows() #关闭所有的窗口
读取本地视频:
import numpy as np
import cv2
cap = cv2.VideoCapture('C:\\Users\\stay\\Desktop\\tiangua.mp4',0)
while(cap.isOpened()):
ret, frame = cap.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.imshow('frame',gray) # 这里显示图像后一定要有个waitkey函数,这样才能一直显示下去
if cv2.waitKey(1000) & 0xFF == ord('q'): # waitkey()函数里面参数的意义是等待1000ms以后结束这个循环,进入下个循环
break
cap.release()
cv2.destroyAllWindows()
保存视频到本地:
import numpy as np
import cv2
cap = cv2.VideoCapture(0)
# Define the codec and create VideoWriter object
fourcc = cv2.VideoWriter_fourcc(*'DIVX')
out = cv2.VideoWriter('E:\\jupyter_project\\openCV-python\\videooutput.avi',fourcc, 20.0, (640,480))
while(cap.isOpened()):
ret, frame = cap.read()
if ret==True:
frame = cv2.flip(frame,0)
# write the flipped frame
out.write(frame)
cv2.imshow('frame',frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
else:
break
# Release everything if job is finished
cap.release()
out.release()
cv2.destroyAllWindows()
上面这段代码就把我摄像头捕捉到的视频录制了下来。