今天学习opencv
一:读取图像
import cv2
# 展示图像,封装成函数
def cv_show_image(name, img):
cv2.imshow(name, img)
cv2.waitKey(0) # 等待时间,单位是毫秒,0代表任意键终止
cv2.destroyAllWindows()
# 读取彩色图像
img = cv2.imread('images/naruto.jpg')
img = cv2.imread('images/naruto.jpg', cv2.IMREAD_COLOR)
print(img.shape) # 图像的颜色三通道是 BGR,跟平常的RGB是相反的顺序哦,这里的shape 是图像的(Height, Width, Channel)
cv_show_image('naruto', img)
# 读取灰色图像
img = cv2.imread('images/naruto.jpg', cv2.IMREAD_GRAYSCALE)
print(img.shape) # 图像的颜色三通道是 BGR,跟平常的RGB是相反的顺序哦,这里的shape就是图像的 (Height, Width)
print(type(img)) # <class 'numpy.ndarray'>类型,底层是一个ndarray的数据结构
print(img.size) # size = H * W,也就是像素点的个数
print(img.dtype) # 每个元素的数据类型是uint8
cv_show_image('naruto', img)
# 保存图像
cv2.imwrite('gray_aruto.jpg', img)
二:读取视频流
import cv2
# 场景一,视频打开测试
cap = cv2.VideoCapture('images/kk 2022-01-23 18-21-21.mp4')
# 检查是否成功打开?
if cap.isOpened():
open, frame = cap.read()
else:
open = False
print(open)
# 场景二,视频打开展示
cap = cv2.VideoCapture('images/kk 2022-01-23 18-21-21.mp4')
while open:
ret, frame = cap.read() # 读取每一帧图像
if frame is None:
print("video is over...")
break
if ret == True:
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # 将彩色图像转成灰度图
cv2.imshow('gray', gray)
if cv2.waitKey(50) & 0xFF == 27: # 等待大概48毫秒(大概是一秒20帧),或者中间有ESC键的输入,就退出。
break
cap.release()
cv2.destroyAllWindows()
二:读取笔记本自带摄像头
import cv2
cap = cv2.VideoCapture(0) # 0就是摄像头
while(1):
ret, frame = cap.read()
if frame is None:
print("camera is over...")
break
cv2.imshow("capture", frame)
if cv2.waitKey(1) & 0xFF == 27:
break
cap.release()
cv2.destroyAllWindows()