opencv--python(一)图像和视频处理之读取,显示和保存
1. 图片的读取,保存与显示:
1)调用opencv
import numpy as np
import cv2img_path = "D:/DL/AI-future/af2019-cv-training-20190312/00/00aed3c6b8f351e52ed5075603b56be1_c.jpg"
img = cv2.imread(img_path,0) #读入图像。第二个参数cv2.IMREAD_COLOR/cv2.IMREAD_GRAYSCALEcv2.imshow("image",img) #显示图像。 注意:毫秒级的,如果没有下句则会闪退
cv2.waitKey(0) #0--无限期的等待键盘输入,按键之后才会运行下一句
cv2.destroyAllWindows() #删除任何我们建立的窗口。删除特定的窗口可以使用 cv2.destroyWindow(),在括号内输入你想删 除的窗口名。cv2.imwrite(img_path,img) #保存图像
例题:加载一个灰度图,显示图片,按下’s’键保存后退出,或者 按下 ESC 键退出不保存。
import numpy as np
import cv2img = cv2.imread('messi5.jpg', 0)
cv2.imshow('image', img)
k = cv2.waitKey(0)
if k == 27: # wait for ESC key to exitcv2.destroyAllWindows()
elif k == ord('s'): # wait for 's' key to savecv2.imwrite('messigray.png', img)cv2.destroyAllWindows()
2)使用 Matplotlib -----Matplotib 是 python 的一个绘图库
import numpy as np
import cv2
from matplotlib import pyplot as pltimg = cv2.imread('messi5.jpg', 0)
plt.imshow(img, cmap = 'gray', interpolation = 'bicubic')
plt.xticks([]), plt.yticks([]) # to hide tick values on X and Y axis
plt.show()
注意:彩色图像使用 OpenCV 加载时是 BGR 模式。但是 Matplotib 是 RGB 模式。所以彩色图像如果已经被 OpenCV 读取,那它将不会被 Matplotib 正确显示。
2. 视频的读取,显示和保存
为了获取视频,你应该创建一个 VideoCapture 对象。他的参数可以是 设备的索引号,或者是一个视频文件。
设备索引号就是在指定要使用的摄像头。 一般的笔记本电脑都有内置摄像头。所以参数就是 0。你可以通过设置成 1 或 者其他的来选择别的摄像头。之后,你就可以一帧一帧的捕获视频了。但是最后别忘了停止捕获视频。
- 读取与显示
例题:
1)使用摄像头来捕获一段视频,并把它转换成灰度视频显示出来。
import numpy as np
import cv2cap = cv2.VideoCapture(0) #创建一个 VideoCapture 对象
while(True):ret, frame = cap.read() #一帧一帧读取图片gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)cv2.imshow('frame',gray)if cv2.waitKey(1) & 0xFF == ord('q'):breakcap.release() # 释放捕获
cv2.destroyAllWindows()
2) 从文件中播放视频
只需要把设备索引号改成视频文件的名字。在 播放每一帧时,使用 cv2.waiKey() 设置适当的持续时间。如果设置的太低,视频就会播放的非常快,如果设置的太高就会播放的很慢,通常情况下 25 毫秒就可以了。
- 保存
对于图片来时很简单,只需要使用 cv2.imwrite()。
对于视频来说我们要创建一个 VideoWriter 的对象。我们应该确定一个输出文件的名字。接下来指定 FourCC 编码(见下面)。播放频率和帧的大小也都需要确定。最后一个是 isColor 标签。如果是 True,每一帧就是彩色图,否则就是灰度图。
FourCC 就是一个 4 字节码,用来确定视频的编码格式:
例题:从摄像头中捕获视频,沿水平方向旋转每一帧并保存它。
import numpy as np
import cv2cap = cv2.VideoCapture(0) #创建一个 VideoCapture 对象#定义编解码器并创建VideoWriter对象
fourcc = cv2.cv.FOURCC(*'XVID')
out = cv2.VideoWriter('output.avi',fourcc, 20.0, (640,480))while(cap.isOpened()):ret, frame = cap.read() #一帧一帧读取图片。cap.read() 返回一个布尔值(ret=True/False)。如果帧读取的是正确的, 就是 True。if ret== True:frame = cv2.flip(frame,0) #1水平翻转,0水平翻转,-1水平竖直翻转out.write(frame) #保存cv2.imshow('frame',frame)if cv2.waitKey(1) & 0xFF == ord('q'):breakelse:break# Release everything if job is finished
cap.release()
out.release()
cv2.destroyAllWindows()
所以,保存操作记得有三步:
1)定义编解码器并创建VideoWriter对象
fourcc = cv2.cv.FOURCC(*'XVID')
out = cv2.VideoWriter('output.avi',fourcc, 20.0, (640,480))
2)操作后保存
out.write(frame) #保存
3)关闭
out.release()
opencv--python(一)图像和视频处理之读取,显示和保存相关推荐
- opencv mat release thrown_【OpenCV+Python】图像与视频处理入门
图像处理入门 之前我们已经讲过了OpenCV在各个平台上安装的方法了,从今天开始,正式进入实战部分.首先我们需要做的就是如何读取图像并显示出来,这是图像处理的最基本的部分. 首先我们来了解几个函数. ...
- opencv python 从摄像头获取视频、帧率、分辨率等属性设置和使用
opencv python 从摄像头获取视频.帧率.分辨率等属性设置和使用 文章目录: 1,为了获取视频,你应该创建一个 VideoCapture 对象.他的参数可以是设备的索引号,或者是一个视频文件 ...
- openCV—Python(6)—— 图像算数与逻辑运算
openCV-Python(6)-- 图像算数与逻辑运算 一.函数简介 1.add-图像矩阵相加 函数原型:add(src1, src2, dst=None, mask=None, dtype=Non ...
- OpenCV python 提取图像内的三色
OpenCV python 提取图像内的三色 原图 [opencv.jpg] import cv2 import numpy as npdef main():# 1.导入图片img_src = cv2 ...
- OpenCV与图像处理学习一——图像基础知识、读入、显示、保存图像、灰度转化、通道分离与合并
OpenCV与图像处理学习一--图像基础知识.读入.显示.保存图像.灰度转化.通道分离与合并 一.图像基础知识 1.1 数字图像的概念 1.2 数字图像的应用 1.3 OpenCV介绍 二.图像属性 ...
- 基于微软开源深度学习算法,用 Python 实现图像和视频修复
作者 | 李秋键 编辑 | 夕颜 出品 | AI科技大本营(ID:rgznai100) 图像修复是计算机视觉领域的一个重要任务,在数字艺术品修复.公安刑侦面部修复等种种实际场景中被广泛应用.图像 ...
- opencv C艹:读取视频文件,保存图像,视频文件,读取保存XML YAML文件
<opencv4快速入门> 认识认识模块 D:\opencv\build\include\opencv2 路径下 calib3d 主要包含相机标定,立体视觉的功能:物体姿势估计,三维重建, ...
- python opencv 图像切割_【OpenCV+Python】图像的基本操作与算术运算
图像的基本操作 在上个教程中,我们介绍了使用鼠标画笔的功能.本次教程,我们将要谈及OpenCV图像处理的基本操作. 本次教程的所有操作基本上都和Numpy相关,而不是与OpenCV相关.要使用Open ...
- OpenCV—Python PyLibTiff_psd 图像基本操作以及图像格式转换
文章目录 一.图片 读.写.显示.属性查看 libtiff 包装器 Python 模块 opencv 模块 PIL 模块 直接修改图片格式 大(分辨率大)图片缩小 与上面代码同效 二.PSD图像读取与 ...
最新文章
- 零基础python入门书籍-浅谈零基础自学python入门书
- easyui combobox设置只读属性
- python升级或者其他原因把yum搞坏了
- mysql 字符类型
- CommunicationsException: Communications link failure
- 关于auto-keras训练cnn模型
- 利用Referer请求头防止“盗链”
- XY路由算法与转弯模型路由算法
- SourceTree的使用
- 软考程序员java_软考程序员难吗?
- 安卓股票悬浮窗_股票悬浮窗的安卓应用
- 德国制造和中国制造究竟不同在哪
- 若微型计算机在工作时突然断电,北语网院20春《计算机基础》作业_1234
- java酒店管理系统_java酒店管理系统(源码+数据库脚本)
- amoled和super amoled哪个更伤眼 amoled和super amoled的显示效果
- 天池龙珠训练营广东工业-林莉子学习笔记-Task1
- mysql MHA的工作原理
- Unreal Engine 4 —— 禅意花园项目中的水池
- 6:Eclipse 常用快捷键及源码查看
- Doris新增字段后立马向新增字段updat和insert显示没有该新增字段或者新增字段没有updata和insert数据