opencv图片读取、显示与保存

一,图片基本操作
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)

`

你可能感兴趣的:(计算机视觉,opencv,计算机视觉,python)