一,图片基本操作
1、读取图片
cv2.imread(filepath,flags)读入图片
cv2.IMREAD_COLOR:默认参数,读入彩色图片,不包括alpha通道
cv2.IMREAD_GRAYSCALE:读入灰色图片
cv2.IMREAD_UNCHANGED:读入完整图片,包括alpha通道
2、显示图片
cv2.imshow(name,img)
第一个参数显示图像的窗口名字,第二个参数是要显示的图像
3、保存图片
cv2.imwrite(file,img,num)
file:要保存的文件名
img:要保存的图像
num:可选,它针对特定的格式:
对于JPEG,其表示的是图像的质量,用0 - 100的整数表示,默认95;
对于png ,第三个参数表示的是压缩级别。默认为3.
#读入图像
import cv2 #读取格式是BGR
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
img=cv2.imread('cat.jpg')
print(img.shape)
img=cv2.imread('cat.jpg',cv2.IMREAD_GRAYSCALE)#灰度图,与彩色图可以相互转换
print(img.shape)
#图像显示,可以创建多个窗口
cv2.imshow('image',img)
cv2.waitKey(0) #停留时长,毫秒级,0表示按任意键终止
cv2.destroyAllWindows()#销毁所有窗口,cv2.destoryWindow(wname)销毁指定窗口
#保存图片
cv2.imwrite('test.png',img)
type(img) #tnumpy.ndarray
img.dtype #dtype('uint8')
img.size #1296000
二、视频读取
cv2.VideoCapture可以捕获摄像头,用数字来控制不同的设备,例如0,1;如果是视频文件,直接指定好路径。
vc=cv2.VideoCapture('A-baby.mp4') #传入视频流
if vc.isOpened():
oepn, frame = vc.read()#读取第一帧视频,用循环可以一直读取视频的不同帧,能够读取成功,open为True
else:
open = False
while open:
ret, frame = vc.read()
if frame is None: #读取视频为空
break
if ret == True:
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) #3通道转化为灰度图
cv2.imshow('result', gray)
if cv2.waitKey(10) & 0xFF == 27: #27为退出键,可以指定键盘其他键
break
vc.release() #释放
cv2.destroyAllWindows()
三、图片处理
#截取部分图像数据
img=cv2.imread('cat.jpg')
cat=img[0:50,0:200] #切片
cv_show('cat',cat)
#颜色通道提取
b,g,r=cv2.split(img)#可以print(r,r.shape等信息)
img=cv2.merge((b,g,r))
print(img.shape)
# 只保留R
cur_img = img.copy()#图像复制
cur_img[:,:,0] = 0
cur_img[:,:,1] = 0
cv_show('R',cur_img)
# 只保留G
cur_img = img.copy()
cur_img[:,:,0] = 0
cur_img[:,:,2] = 0
cv_show('G',cur_img)
# 只保留B
cur_img = img.copy()
cur_img[:,:,1] = 0
cur_img[:,:,2] = 0
cv_show('B',cur_img)
`