opencv 图片读取和视频读取(一)
环境搭建
一 图片读取
1代码
import cv2 as cv #读取图片 src=cv.imread('./yiner.jpg') #cv.WINDOW_AUTOSIZE 表示自动窗口 cv.namedWindow('赵丽颖',cv.WINDOW_AUTOSIZE) #图片显示窗口 cv.imshow('赵丽颖',src) #参数0表示一直显示,直到键盘按下一个数字键就消失 cv.waitKey(0) #删除所有的图片窗口 cv.destroyAllWindows()
2 图片读取函数解说
- imread( filename,int flags); 读取图片
flags:0和2表示灰色其他值表示彩色
- cv.NamedWindow( name, int flags ); 创建windows窗口
参数1:窗口名字参数2:窗口的显示方式可选类型有:为0或cv.WINDOW_NORMAL:可以改变窗口大小不写或cv.WINDOW_AUTOSIZE : 则不可改变大小,显示原图片大小
- imshow(winname, InputArray mat) 显示图片窗口
参数1:图片窗口名字 参数2:需要显示图片(numpy数组)
- waitKey(K) 窗口显示时间,单位:毫秒
k=0 : 无限期的等待键盘输入。
- cv2.destroyAllWindows() 可以轻易删除任何我们建立的窗口。如果你想删除特定的窗口可以使用 cv2.destroyWindow(),在括号内输入你想删除的窗口名。
- cv2.imwrite(filenameInputArray mat) 保存图片
参数1:图片保存的路径 参数2:表示图片的数组(src).
3 图片属性
import cv2 as cv import numpy as np#输出图片的属性 def get_image_info(image):print(type(image)) #显示图片数据类型为numpy类型# 图像矩阵的shape属性表示图像的大小,shape会返回tuple元组,# 第一个元素表示矩阵行数,第二个元组表示矩阵列数,第三个元素是3,# 表示像素值由光的三原色组成print(image.shape)print(image.size)#图像大小print(image.dtype)pixel_data=np.array(image)print(pixel_data)#图片矩阵src=cv.imread('./yiner.jpg') cv.namedWindow('颖儿',cv.WINDOW_AUTOSIZE) cv.imshow('赵丽颖',src) get_image_info(src) cv.imwrite('yiner2.jpg',src) #图片另存为 cv.waitKey(0) cv.destroyAllWindows()
二 视频读取
1 代码
# -*- coding=GBK -*- import cv2 as cv# 打开摄像头获取图片 def video_demo():# 打开摄像头,0代表的是设备id,如果有多个摄像头,可以设置其他数值capture = cv.VideoCapture(0) while True:# 读取摄像头,它能返回两个参数,第一个参数是bool型的ret,其值为True或False,代表有没有读到图片;第二个参数是frame,是当前截取一帧的图片ret, frame = capture.read()# 翻转 0:上下颠倒 大于0水平颠倒 小于180旋转frame = cv.flip(frame, 1) cv.imshow("video", frame)# 键盘输入q退出窗口,不按q点击关闭会一直关不掉 也可以设置成其他键。if cv.waitKey(10) & 0xFF == ord('q'): breakvideo_demo() cv.destroyAllWindows()
2 参数解释
- capture=VideoCapture(0) : 开启视频
0 表示打开本地摄像头,也可以设置其他数值 也可以是视频文件地址,调用视频文件,如果要播放要设置帧的循环返回值:获取视频句柄
- ret, frame = capture.read() 读取视频
返回值两个 返回值1:bool值,表示是否读取到视频; 返回值2:frame,是当前截取的一帧图片
- frame = cv.flip(frame, 1) 视频图片的反转变换
参数2:0:上下颠倒 大于0:水平颠倒 小于0:180旋转
3 视频保存
我们要创建一个 VideoWriter 的对象。我们应该确定一个输出文件的名字。接下来指定 FourCC 编码(下面会介绍)。播放频率和帧的大小也都需要确定。最后一个是 isColor 标签。如果是 True,每一帧就是彩色图,否则就是灰度图。
FourCC 就是一个 4 字节码,用来确定视频的编码格式。可用的编码列表可以从fourcc.org查到。这是平台依赖的。下面这些编码器对我来说是有用个。
• In Fedora: DIVX, XVID, MJPG, X264, WMV1, WMV2. (XVID is more preferable. MJPG results in high size video. X264 givesvery small size video)
• In Windows: DIVX (More to be tested and added)
• In OSX : (I don’t have access to OSX. Can some one fill this?)
FourCC 码以下面的格式传给程序,以 MJPG 为例:
cv2.cv.FOURCC('M','J','P','G') 或者 cv2.cv.FOURCC(*'MJPG')。
# 视频保存 import cv2 #启动摄像头 cap = cv2.VideoCapture(0)# 定义编解码器并创建VideoWriter对象 fourcc = cv2.VideoWriter_fourcc(*'XVID') out = cv2.VideoWriter('output.avi',fourcc, 20.0, (640,480))while(cap.isOpened()):#摄像头是否开启ret, frame = cap.read() #读取视频frame = cv2.flip(frame, 0) #翻转视频if ret==True: #如果接受到视频信息frame = cv2.flip(frame,0)# 视频写入 out.write(frame)cv2.imshow('frame',frame)if cv2.waitKey(1) & 0xFF == ord('q'): #输入q退出breakelse:break# 视频写完后就释放资源 cap.release() out.release() cv2.destroyAllWindows()
转载于:https://www.cnblogs.com/angle6-liu/p/10639952.html
opencv 图片读取和视频读取(一)相关推荐
- OpenCV--图像读取与视频读取
目录 1.图像的读取 2.图像的属性值输出 3.将图片转换成灰度图 4.视频的读取 1.图像的读取 直接用cv2的模块进行读取 import cv2 #opencv读取的格式是BGR import m ...
- opencv图片转幻灯片视频
1 /*g++ *.cpp `pkg-config --cflags --libs opencv` -std=c++11*/ 2 3 #include <opencv2/opencv.hpp&g ...
- OpenCV学习笔记_2_视频读取和保存
视频处理 视频截取图片 创建一个VideoCapture对象,从摄像头读取视频 一般来说,该函数每25毫秒读取一帧,也就是说,视频合适帧数在40帧. import numpy as np import ...
- opencv图片合成视频提高视频清晰度参数
之前有做过图片合成视频的功能,大概代码就是这样,你可以看一下 /** 图片合成视频 @param mp4SavePath 视频保存路径 @param imageDir 图片地址 @param rate ...
- 【opencv】(1) 基础操作:图像视频读取、图像截取、颜色通道
主要内容有:图像及视频的读取和保存.图像显示.转换灰度图.图像截取.颜色通道提取和组合 那我们开始吧. 1. 图像操作 首先我们导入opencv库,彩色图像一般都是由RGB(红绿蓝)三颜色通道构成,灰 ...
- OpenCv图像处理之图像视频摄像头读取和保存
OpenCv图像处理之图像视频摄像头读取与保存 使用cv::imread()读取图片 使用cv::imwrite()存储图片 使用cv::VideoCapture::open()读取视频 使用cv:: ...
- 【opencv四】利用opencv读取显示视频
在opencv中读取显示视频的头文件是highgui.hpp.视频图像处理头文件imgproc.hpp. 整体代码如下,如要测试自己的图片,需要将代码段中的图片地址更改为自己图片的绝对路径. #inc ...
- opencv实现从视频读取每一帧图像保存并合成avi格式视频
我的方法是用两个mat生成的对象,frame,src,frame是读取了视频的每一帧图像,并实现了保存,src是单纯用于合成视频.目前有出现两个bug,一个是生成的avi格式视频过大,一个是获取的图像 ...
- OpenCV计算机视觉学习(1)——图像基本操作(图像视频读取,ROI区域截取,常用cv函数解释)
人工智能学习离不开实践的验证,推荐大家可以多在FlyAI-AI竞赛服务平台多参加训练和竞赛,以此来提升自己的能力.FlyAI是为AI开发者提供数据竞赛并支持GPU离线训练的一站式服务平台.每周免费提供 ...
最新文章
- 分库分表:如何做到永不迁移数据和避免热点?
- nginx 安装禅道
- java图像分类源码_在Android设备上使用NCNN图像分类的demo
- 自然语言处理hanlp的入门基础
- leetcode 263. 丑数(Java版)
- c语言输入若干数输出最小值循环结构,C语言上机150道题
- win10右键一直转圈_Win10电脑开机一直转圈无法进入系统的解决方法
- java unreported exception_Java异常处理
- java中如何生成可执行的jar文件
- CV Code | 本周新出计算机视觉开源代码汇总(含目标跟踪、语义分割、姿态跟踪、少样本学习等)...
- 力扣206,反转链表(JavaScript)
- redis 使用案例
- 克罗谈投资策略02_赢家和输家
- 敏捷软件开发VS传统软件开发
- 免费在线SQL数据库SQL Fiddle使用简介
- BZOJ5369:[PKUSC2018]最大前缀和(状压DP)
- 【C/C++】简单的程序小游戏-推箱子代码
- 备份恢复Lesson 08. Using RMAN-Encrypted Backups
- 2018华为云区块链全球开发者大赛——小链接 大未来
- 用jQuery实现qq音乐播放器
热门文章
- 数据结构笔记 递推与迭代
- phpcms评论的url替换问题
- [ZJOI2007]棋盘制作 报表统计 矩阵游戏 时态同步
- “跟着菜鸟一起学R语言” 现已更名为“数据志”
- Python导入sciry包出错
- python for循环求和_python用for循环求和的方法总结
- Basler相机Pylon4配置VC++6.0
- serv-u 自定义html,Serv-U架设教程_Serv-U使用教程图文版
- win7无线热点_Windos7系统笔记本设置无线热点教程,应急时候可以用
- 宁夏启动人工智能助推教师队伍建设行动