cv2.IMREAD_COLOR:彩色图像
cv2.IMREAD_GRAYSCALE:灰色图像
import cv2 #OpenCv,有很多计算机视觉需要的的算法;opencv读取的格式是BGR
import matplotlib.pyplot as plt #Pyplot包含一系列绘图函数的相关函数,用as给它设置一个别名plt
import numpy as np #支持大量的维度数组与矩阵运算 用as给其设置别名np
#%matplotlib inline #用它可以省略plt.show(),vscode用不了
def cv_show(name,img): #定义一个函数,更方便的显示图像
cv2.imshow(name,img) #图像的显示,也可以创建多个窗口
cv2.waitKey(0) #等待时间,毫秒级,0表示任意键终止
cv2.destroyAllWindows()
img=cv2.imread('cat.jpg') #显示一个BGR图像
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows
img=cv2.imread('cat.jpg',cv2.IMREAD_GRAYSCALE) #显示一个灰度图像
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows
cv2.imwrite('mycat.png',img) #保存图片
print(img.shape) #图像基本数值
print(img) #图片每一个像素点(矩阵形式)
print(type(img)) #查看图片底层格式
print(img.size) #计算图片像素点个数
print(img.dtype) #图像数据类型
img=cv2.imread('cat.jpg')
cat=img[0:200,0:200] #截取一段图像
cv_show('cat',cat) #显示截取图像的彩色图
B,G,R=cv2.split(img)
print(B)
print(B.shape)
img=cv2.merge((B,G,R))
print(img.shape)
cur_img=img.copy() #只保留R通道
cur_img[:,:,0]=0
cur_img[:,:,1]=0
cv_show('R',cur_img)
cur_img=img.copy() #只保留G通道
cur_img[:,:,0]=0
cur_img[:,:,2]=0
cv_show('G',cur_img)
cur_img=img.copy() #只保留B通道
cur_img[:,:,1]=0
cur_img[:,:,2]=0
cv_show('B',cur_img)
cv2.VideoCapture可以捕获摄像头,用数字来控制不同的设备,例如0,1。
如果是视频文件,直接指定好路径即可。
import cv2
import matplotlib.pyplot as plt
import numpy as np
#播放一个灰度视频
vc = cv2.VideoCapture('test.mp4')
if vc.isOpened(): #检查是否打开正确
open,frame=vc.read()
else:
open = False
while open:
ret,frame=vc.read()
if frame is None:
break
if ret == True:
gray=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY) #此行代码为显示视频是灰度还是彩色的关键
cv2.imshow('result',gray)
if cv2.waitKey(10) & 0xFF == 27:
break
vc.ralease()
cv2.destroyAllWindows()
#显示一个彩色视频
vc = cv2.VideoCapture('test.mp4')
if vc.isOpened():
open,frame=vc.read()
else:
open = False
while open:
ret,frame=vc.read()
if frame is None:
break
if ret == True:
cv2.imshow('result',frame)
if cv2.waitKey(10) & 0xFF == 27:
break
vc.ralease()
cv2.destroyAllWindows()