【opencv学习】【读取图像、视频、摄像头】

今天学习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()

猜你喜欢

转载自blog.csdn.net/qq_29367075/article/details/122831568