当前位置: 首页 > news >正文

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'):breakelse:breakcapture.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'):breakelse:breakcapture.release()
out_gray.release()
cv2.destroyAllWindows()

http://www.lryc.cn/news/509511.html

相关文章:

  • Flink SQL Cookbook on Zeppelin 部署使用
  • 【hackmyvm】DC04靶机wp
  • 记录jvm进程号
  • day19——web自动化测试(1)
  • go window安装protoc protoc生成protobuf文件
  • 微信小程序中momentjs无法切换中文问题处理
  • 数据结构:链表
  • 领克Z20结合AI技术,革新自动驾驶辅助系统
  • vector快慢指针+例题详解
  • 重温设计模式--1、组合模式
  • 单片机:实现SYN6288语音播报(附带源码)
  • cookie,session,token 的区别
  • 基于OpenAI Whisper AI模型自动生成视频字幕:全面解析与实战指南
  • 物理学天空的两朵乌云——量子论与相对论
  • 聚类之轮廓系数
  • Jenkins 构建流水线
  • RTK部分模糊度固定测量流程图
  • 力扣-数据结构-2【算法学习day.73】
  • 操作系统导论读书笔记
  • 基于3D-Speaker进行区分说话人项目搭建过程报错记录 | 通话录音说话人区分以及语音识别 | 声纹识别以及语音识别 | pyannote-audio
  • 如何使用流式渲染技术提升用户体验
  • 【接口自动化连载】使用yaml配置文件自动生成接口case
  • 前端安全 常见的攻击类型及防御措施
  • 来道面试题——CopyOnWriteArrayList
  • 【Rust自学】5.1. 定义并实例化struct
  • React 生命周期完整指南
  • python中os._exit(0) 强制关闭进程后来杀死线程
  • LeetCode:257. 二叉树的所有路径
  • RSICV国产芯片之CHV208
  • 理解神经网络