数据读取—图像
- cv2.IMREAD_COLOR:彩色图像
- cv2.IMREAD_GRAYSCALE:灰度图像
OpenCV中RGB2GRAY的实现:本质上就是寻找一个三维空间到一维空间的映射,以R、G、B为轴建立空间直角坐标系,则图片上的每一个像素点都可以用一个点表示,则可以通过一个公式Gray = 0.29900×R + 0.58700×G + 0.11400×B,来完成一维空间的映射。
import cv2 # OpenCV读取格式是BGR
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
img=cv2.imread('cat.png')
img=cv2.imread('cat.png',cv2.IMREAD_GRAYSCALE)
图像显示
def cv_show(name,img):
cv2.imshow(name,img)
cv2.waitKey(0)
cv2.destroyAllWindows()
#图像的显示
cv2.imshow('image',img)
cv2.waitKey(0) # 等待时间,0表示任意键终止
cv2.destroyAllWindows()
#保存
cv2.imwrite('cat.png',img)
数据读取—视频
- cv2.VideoCapture可以捕获摄像头,用数字来控制不同的设备,例如0,1
- 如果是视频文件,直接指定好路径即可
vc = cv2.VideoCapture('test.mp4')
#检查是否打开正确
if vc.isOpened():
oepn, 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.release()
cv2.destroyAllWindows()
截取部分图像数据
# 截取部分图像数据
img=cv2.imread('cat.png')
cat=img[0:500,0:500]
#颜色通道提取
b,g,r=cv2.split(img)
# 只保留R(G B同理)
cur_img = img.copy()
cur_img[:,:,0] = 0
cur_img[:,:,1] = 0