OpenCV-Python实战(1)——图像or视频文件处理

1、安装依赖库

pip install opencv-python   # 主模块包

pip install opencv-contrib-python  # 主模块+附加模块

pip install numpy  # numpy 库

2、图像的读取、显示、保存

 读取:cv2.imread()

img = cv2.imread(path, flag)

img:   cv2.imread()函数返回值,如果读取失败则为None。

path:   图像文件的路径,图片格式:*.bmp、*.jpg、*.png、*.tiff  等。

flag: 文件读取方式,默认为:1。常见方式有以下几种:

方式解释
IMREAD_UNCHANGED-1原图,并保留Alpha透明度通道
IMREAD_GRAYSCALE0灰度图
IMREAD_COLOR1BGR

显示:cv2.imshow()

cv2.imshow('name', image)

'name':窗口名称。

image:要显示的图片对象。

存储:cv2.imwrite()

ret = cv2.imwrite('path', image)

'path'存储图像的路径/图像名/格式---如:'Lena.png'。

image:要存储的图片对象。

示例:

import cv2

# 读取
img1 = cv2.imread('Lena.png')
img2 = cv2.imread('Lena.png',cv2.IMREAD_GRAYSCALE)
img3 = cv2.imread('Lena.png',cv2.IMREAD_UNCHANGED)
img4 = cv2.imread('Lena.png',cv2.IMREAD_COLOR)

# 显示
cv2.imshow('Lena_1',img1)
cv2.waitKey(0)  # 等待时长,单位ms,0表示按任意键取消等待。
cv2.destroyWindow('Lena_1')  # 关闭名称为 'Lena_1' 的窗口。
cv2.imshow('Lena_2',img2)
cv2.waitKey(0)
cv2.imshow('Lena_3',img3)
cv2.waitKey(0)
cv2.imshow('Lena_4',img4)
cv2.waitKey(0)

# 保存
cv2.imwrite('Lena_1.png',img1)  # 保存一个作为示例

# 关闭窗口
cv2.destroyAllWindows()   # 关闭所有窗口。

3、视频的读取、显示、保存

 读取:cv2.VideoCapture()

capture = cv2.VideoCapture('test.mp4')  # 0 为本机摄像头

capture:   cv2.VideoCapture()函数返回值,如果读取失败则为None。

path:   视频文件的路径,图片格式:*.mp4  等。

显示:capture.get()

frame = capture.get(flag)

frame:视频的属性,capture.get()函数的返回值,与传入的参数有关。

flag:属性请求参数,常见方式有以下几种:

视频属性解释
CAP_PROP_POS_FRAMES视频的当前帧
CAP_PROP_POS_MSEC当前帧的时间戳
CAP_PROP_FPS获取FPS
CAP_PROP_FRAME_WODTH视频帧的宽度
CAP_PROP_FRAME_HEIGHT视频帧的高度
CAP_PROP_FRAME_COUNT视频的总帧数

 获取视频的属性

# 获取视频的属性
frame_width = capture.get(cv2.CAP_PROP_FRAME_WIDTH)
frame_height = capture.get(cv2.CAP_PROP_FRAME_HEIGHT)
fps = capture.get(cv2.CAP_PROP_FPS)

 以图片帧的方式播放视频

while capture.isOpened():
    ret, frame = capture.read()
    if ret:
        gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
        out_gray.write(gray_frame)  # 注意这里的视频帧颜色要与前面的 False/Ture 对应。

        cv2.imshow('test', gray_frame)

        if cv2.waitKey(10) & 0xFF == ord('q'):
            break
    else:
        break

capture.release()
out_gray.release()
cv2.destroyAllWindows()

存储:cv2.VideoWriter()

fourcc = cv2.VideoWriter_fourcc('m', 'p', '4', 'v')
cv2.VideoWriter('path', fourcc, int(fps), (int(frame_width), int(frame_height)), False)

cv2.VideoWriter_fourcc():使用四字节编码器fourcc指定视频编码器,此处编码器定义为'mp4v'。

'path':视频保存地址,*.mp4  等。

fourcc:fourcc 本身是一个 32 位的无符号数值,用 4 个字母表示采用的编码器。一般依据你的电脑环境安装了哪些编码器。 常用的有 “DIVX"、”MJPG"、“XVID”、“X264"。可用的列表在这里,点击Video Codecs by FOURCC

fps:视频的帧率。

frame_width;视频帧的宽度。

frame_width:视频帧的高度。

False:以灰度方式写入视频;Ture:以彩色方式写入视频。

示例:

import cv2

# 读取
capture = cv2.VideoCapture('cxk.mp4')

# 视频属性
frame_width = capture.get(cv2.CAP_PROP_FRAME_WIDTH)
frame_height = capture.get(cv2.CAP_PROP_FRAME_HEIGHT)
fps = capture.get(cv2.CAP_PROP_FPS)

# 保存与播放
fourcc = cv2.VideoWriter_fourcc('m','p','4','v')
out_gray = cv2.VideoWriter('test.mp4', fourcc, int(fps), (int(frame_width), int(frame_height)), False)

while capture.isOpened():
    ret, frame = capture.read()
    if ret:
        gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
        out_gray.write(gray_frame)  # 注意这里的视频帧颜色要与前面的 False/Ture 对应。

        cv2.imshow('test', gray_frame)

        if cv2.waitKey(10) & 0xFF == ord('q'):
            break
    else:
        break

capture.release()
out_gray.release()
cv2.destroyAllWindows()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小码贾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值