目录
1.计算机眼中的图像
计算机中的图像是由大量像素点构成的,而每个像素点又是由RGB三颜色通道的矩阵所表示的,所以在计算机眼中的图像是由大量矩阵数据所构成的。
1.1.图像的表示方法
import cv2
import matplotlib.pyplot as plt
import numpy as np
img = cv2.imread('imgs/girl.jpg')
print(img)
1.2.显示图像(此处用opencv方式打开)
原图:
#图像的显示,也可以创建多个窗口
cv2.imshow('image',img)
#等待时间,毫秒级,0表示任意键终止
cv2.waitKey(0)
cv2.destroyAllWindows()
灰度图:
img = cv2.imread('imgs/girl.jpg', cv2.IMREAD_GRAYSCALE)
print(img.shape)
1.3ROI区域(部分图像截取)
1.4颜色通道提取
def cv_show(name,img):
#图像的显示,也可以创建多个窗口
cv2.imshow('image',img)
#等待时间,毫秒级,0表示任意键终止
cv2.waitKey(0)
cv2.destroyAllWindows()
#颜色通道提取
img = cv2.imread('imgs/girl.jpg')
b,g,r=cv2.split(img)
img=cv2.merge((b,g,r))
#只保留R
cur_img=img.copy()
cur_img[:,:,0]=0
cur_img[:,:,1]=0
cv_show('R',cur_img)
2.视频文件处理
2.1读取、显示视频文件
video = cv2.VideoCapture("gril.mp4") # 打开视频文件
while (video.isOpened()): # 视频文件被打开后
retval, image = video.read() # 读取视频文件
# 设置“Video”窗口的宽为420,高为300
cv2.namedWindow("Video", 0)
cv2.resizeWindow("Video", 420, 300)
if retval == True: # 读取到视频文件后
cv2.imshow("Video", image) # 在窗口中显示读取到的视频文件
else: # 没有读取到视频文件
break
key = cv2.waitKey(100) # 窗口的图像刷新时间为1毫秒
if key == 27: # 如果按下Esc键
break
video.release() # 关闭视频文件
cv2.destroyAllWindows() # 销毁显示视频文件的窗口
2 .2将视频文件转为灰度视频
#灰度化处理
video = cv2.VideoCapture("gril.mp4") # 打开视频文件
while (video.isOpened()): # 视频文件被打开后
retval, img_Color = video.read() # 读取视频文件
# 设置“Video”窗口的宽为420,高为300
cv2.namedWindow("Gray", 0)
cv2.resizeWindow("Gray", 420, 300)
if retval == True: # 读取到视频文件后
# 把“gril.mp4”由彩色视频转换为灰度视频
img_Gray = cv2.cvtColor(img_Color, cv2.COLOR_BGR2GRAY)
cv2.imshow("Gray", img_Gray) # 在窗口中显示读取到的视频文件
else: # 没有读取到视频文件
break
key = cv2.waitKey(1) # 窗口的图像刷新时间为1毫秒
if key == 27: # 如果按下Esc键
break
video.release() # 关闭视频文件
cv2.destroyAllWindows() # 销毁显示视频文件的窗口
2.3.视频文件的暂停和播放
import cv2
video = cv2.VideoCapture("gril.mp4") # 打开视频文件
while (video.isOpened()): # 视频文件被打开后
retval, image = video.read() # 读取视频文件
# 设置“Video”窗口的宽为420,高为300
cv2.namedWindow("Video", 0)
cv2.resizeWindow("Video", 420, 300)
if retval == True: # 读取到视频文件后
cv2.imshow("Video", image) # 在窗口中显示读取到的视频文件
else: # 没有读取到视频文件
break
key = cv2.waitKey(50) # 窗口的图像刷新时间为50毫秒
if key == 32: # 如果按下空格键
cv2.waitKey(0) # 不刷新图像,实现暂停效果
continue # 再按一次空格键,继续播放
if key == 27: # 如果按下Esc键
break
video.release() # 关闭视频文件
cv2.destroyAllWindows() # 销毁显示视频文件的窗口
3.电脑摄像头
3.1调用电脑摄像头
import cv2
capture = cv2.VideoCapture(0) # 打开笔记本内置摄像头
while (capture.isOpened()): # 笔记本内置摄像头被打开后
retval, image = capture.read() # 从摄像头中实时读取视频
cv2.imshow("Video", image) # 在窗口中显示读取到的视频
key = cv2.waitKey(1) # 窗口的图像刷新时间为1毫秒
if key == 32: # 如果按下空格键
break
capture.release() # 关闭笔记本内置摄像头
cv2.destroyAllWindows() # 销毁显示摄像头视频的窗口
3.2视频灰度化操作
import cv2
capture = cv2.VideoCapture(0, cv2.CAP_DSHOW) # 打开笔记本内置摄像头
while (capture.isOpened()): # 笔记本内置摄像头被打开后
retval, image = capture.read() # 从摄像头中实时读取视频
# 把彩色视频转换为灰度视频
image_Gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
if retval == True: # 读取到摄像头视频后
cv2.imshow("Video", image) # 在窗口中显示彩色视频
cv2.imshow("Video_Gray", image_Gray) # 在窗口中显示灰度视频
key = cv2.waitKey(1) # 窗口的图像刷新时间为1毫秒
if key == 32: # 如果按下空格键
break
capture.release() # 关闭笔记本内置摄像头
cv2.destroyAllWindows() # 销毁显示摄像头视频的窗口
3.3.抓拍摄像头视频的某一帧图像
import cv2
cap = cv2.VideoCapture(0, cv2.CAP_DSHOW) # 打开笔记本内置摄像头
while (cap.isOpened()): # 笔记本内置摄像头被打开后
ret, frame = cap.read() # 从摄像头中实时读取视频
cv2.imshow("Video", frame) # 在窗口中显示视频
k = cv2.waitKey(1) # 图像的刷新时间为1毫秒
if k == 32: # 按下空格键
cap.release() # 关闭笔记本内置摄像头
cv2.destroyWindow("Video") # 销毁名为Video的窗口
cv2.imwrite("D:/copy.png", frame) # 保存按下空格键时摄像头视频中的图像
cv2.imshow('img', frame) # 显示按下空格键时摄像头视频中的图像
cv2.waitKey() # 刷新图像
break
cv2.destroyAllWindows() # 销毁显示图像的窗口