环境搭建

一 图片读取

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 图片读取和视频读取(一)相关推荐

  1. OpenCV--图像读取与视频读取

    目录 1.图像的读取 2.图像的属性值输出 3.将图片转换成灰度图 4.视频的读取 1.图像的读取 直接用cv2的模块进行读取 import cv2 #opencv读取的格式是BGR import m ...

  2. opencv图片转幻灯片视频

    1 /*g++ *.cpp `pkg-config --cflags --libs opencv` -std=c++11*/ 2 3 #include <opencv2/opencv.hpp&g ...

  3. OpenCV学习笔记_2_视频读取和保存

    视频处理 视频截取图片 创建一个VideoCapture对象,从摄像头读取视频 一般来说,该函数每25毫秒读取一帧,也就是说,视频合适帧数在40帧. import numpy as np import ...

  4. opencv图片合成视频提高视频清晰度参数

    之前有做过图片合成视频的功能,大概代码就是这样,你可以看一下 /** 图片合成视频 @param mp4SavePath 视频保存路径 @param imageDir 图片地址 @param rate ...

  5. 【opencv】(1) 基础操作:图像视频读取、图像截取、颜色通道

    主要内容有:图像及视频的读取和保存.图像显示.转换灰度图.图像截取.颜色通道提取和组合 那我们开始吧. 1. 图像操作 首先我们导入opencv库,彩色图像一般都是由RGB(红绿蓝)三颜色通道构成,灰 ...

  6. OpenCv图像处理之图像视频摄像头读取和保存

    OpenCv图像处理之图像视频摄像头读取与保存 使用cv::imread()读取图片 使用cv::imwrite()存储图片 使用cv::VideoCapture::open()读取视频 使用cv:: ...

  7. 【opencv四】利用opencv读取显示视频

    在opencv中读取显示视频的头文件是highgui.hpp.视频图像处理头文件imgproc.hpp. 整体代码如下,如要测试自己的图片,需要将代码段中的图片地址更改为自己图片的绝对路径. #inc ...

  8. opencv实现从视频读取每一帧图像保存并合成avi格式视频

    我的方法是用两个mat生成的对象,frame,src,frame是读取了视频的每一帧图像,并实现了保存,src是单纯用于合成视频.目前有出现两个bug,一个是生成的avi格式视频过大,一个是获取的图像 ...

  9. OpenCV计算机视觉学习(1)——图像基本操作(图像视频读取,ROI区域截取,常用cv函数解释)

    人工智能学习离不开实践的验证,推荐大家可以多在FlyAI-AI竞赛服务平台多参加训练和竞赛,以此来提升自己的能力.FlyAI是为AI开发者提供数据竞赛并支持GPU离线训练的一站式服务平台.每周免费提供 ...

最新文章

  1. 分库分表:如何做到永不迁移数据和避免热点?
  2. nginx 安装禅道
  3. java图像分类源码_在Android设备上使用NCNN图像分类的demo
  4. 自然语言处理hanlp的入门基础
  5. leetcode 263. 丑数(Java版)
  6. c语言输入若干数输出最小值循环结构,C语言上机150道题
  7. win10右键一直转圈_Win10电脑开机一直转圈无法进入系统的解决方法
  8. java unreported exception_Java异常处理
  9. java中如何生成可执行的jar文件
  10. CV Code | 本周新出计算机视觉开源代码汇总(含目标跟踪、语义分割、姿态跟踪、少样本学习等)...
  11. 力扣206,反转链表(JavaScript)
  12. redis 使用案例
  13. 克罗谈投资策略02_赢家和输家
  14. 敏捷软件开发VS传统软件开发
  15. 免费在线SQL数据库SQL Fiddle使用简介
  16. BZOJ5369:[PKUSC2018]最大前缀和(状压DP)
  17. 【C/C++】简单的程序小游戏-推箱子代码
  18. 备份恢复Lesson 08. Using RMAN-Encrypted Backups
  19. 2018华为云区块链全球开发者大赛——小链接 大未来
  20. 用jQuery实现qq音乐播放器

热门文章

  1. 数据结构笔记 递推与迭代
  2. phpcms评论的url替换问题
  3. [ZJOI2007]棋盘制作 报表统计 矩阵游戏 时态同步
  4. “跟着菜鸟一起学R语言” 现已更名为“数据志”
  5. Python导入sciry包出错
  6. python for循环求和_python用for循环求和的方法总结
  7. Basler相机Pylon4配置VC++6.0
  8. serv-u 自定义html,Serv-U架设教程_Serv-U使用教程图文版
  9. win7无线热点_Windos7系统笔记本设置无线热点教程,应急时候可以用
  10. 宁夏启动人工智能助推教师队伍建设行动