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‘):
            break

video_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退出
            break
    else:
        break

# 视频写完后就释放资源
cap.release()
out.release()
cv2.destroyAllWindows()
 

原文地址:https://www.cnblogs.com/angle6-liu/p/10639952.html

时间: 2024-10-04 09:28:58

opencv 图片读取和视频读取(一)的相关文章

opencv图片转幻灯片视频

1 /*g++ *.cpp `pkg-config --cflags --libs opencv` -std=c++11*/ 2 3 #include <opencv2/opencv.hpp> 4 using namespace std; 5 using namespace cv; 6 #define NUM_FRAME 300 7 #define SIZE 7 8 9 char path[100];//输入文件路径 10 11 //将图片序列转换为视频 12 void getVideo()

OpenCV视频读取播放,视频转换为图片

转载请注明出处!!! http://blog.csdn.net/zhonghuan1992 OpenCV视频读取播放,视频转换为图片 介绍几个有关视频读取的函数: VideoCapture::VideoCapture VideoCapture能够从文件里或者摄像头中读取视频,这是提供给C++的接口的.C的接口是CvCapture结构.        <span style="white-space:pre"> </span>C++: VideoCapture::

matlab读写图片,读取图像序列,读取AVI视频

介绍使用matlab读写图片,读取图像序列,读取AVI视频的方法: 一. 读写图像 使用matlab读一幅图像,并另存 1 % Filename: ImageReadWrite 2 clc; 3 clear; 4 i = imread('D:\\aa3.bmp');%打开D:\\aa3.bmp图像 5 imshow(i); %显示图像 6 imwrite(i, 'D:\\aa4.jpg');%将图像另存为D:\\aa4.jpg 使用matlab读写还可以进行图片格式转换,将jpg图像转换成256

Duanxx的OpenCV学习:图片转化为视频

前面我说明了一下Opencv的视频转图片的方式和代码,这次要说明的是Opencv如何将图片转化为视频: 本文完整代码下载 1 VideoWriter说明 这里主要用到的是Opencv里的一个类:VideoWriter 其API参考链接:API链接. 函数原型: VideoWriter::VideoWriter(const string& filename, int fourcc, double fps, Size frameSize, bool isColor=true) 参数说明: filen

Java使用OpenCV3.2实现视频读取与播放

Java使用OpenCV3.2实现视频读取与播放 OpenCV从3.x版本开始其JAVA语言的SDK支持视频文件读写,这样就极大的方便了广大Java语言开发者学习与使用OpenCV,通过摄像头或者视频文件读取帧的内容与播放,完成视频内容分析与对象跟踪等各种应用开发任务.可以说OpenCV C++ SDK可以做到绝大多数事情,在OpenCV3.x版本上用Java都可以完成,这样就为很多Java开发者学习OpenCV打开了方便之门. 实现思路 首先用OpenCV相关API读取视频流或者视频文件的每一

OpenCV+海康威视摄像头的实时读取

OpenCV+海康威视摄像头的实时读取 环境 硬件: PC:i7-4970 16GB内存 摄像头型号:DS-2CD3310D-I(2.8mm) 软件: windows-x64.vs2012.opencv2.4.8.hkvision5114-x64版本库 配置 保证使用SADP工具可以识别摄像头,然后配置IP与电脑在同一个网段. 再保证可以从浏览器中访问.账号密码默认的一般是admin.a123456789(老版本的摄像头密码是12345). 登录成功后可能要求下载WebComponent控件,下

Duanxx的Opencv学习:将视频转换为图片

这里读取一个视频,然后将视频的每一帧都保存为png格式的图片, 本文的代码下载 这里首先要解决的问题是为图片按下标生成名字: 这个函数输入的是对视频中的图像帧的计数,输出的是文件的名字,以png格式保存 名字示例:f00005.png string nameGenerate(unsigned int frameCounter) { unsigned int num = num2str1(frameCounter).length();///<获得数字的位数 assert(num <= 5);//

WP_图片管理机制/异步读取网络图片

项目有这样的需求, 要求窗口加载一揽子图片,为了不让UI阻塞太久,采用异步读取后绑定显示的方案. 图片的下载应该采用并发的过程(等待网络响应会很耗时,一张一张的下载,等待时间太长) 图片的下载不能占用过多的线程数,应有个阀值(图片不是核心业务,不能占用那么多资源) 在图片加载的过程中,如果用户有操作,比如窗口跳转,则未加载完成的图片加载的过程应取消(为了替用户节省流量). 需求就是这么多了,如何实现呢? 思路是这样的,由于需要异步,且需要等待,首先想到使用队列,先让队列排列起来,再定量迭代读取.

SQL 2008存储图片和SQL 2008读取图片

用SQL Server存储文字数据很容易实现,如果用SQL Server存储图片呢?大家有没有实现思路呢?现在我用一个Demo来为大家提供一种在SQL Server中存储图片的思路. 场景:在superPhoto文件夹中,有三位NBA超级巨星的图片需要存储在数据库中,他们分别是保罗.罗斯和德隆,文件内容如下: 有了需求,下面讲实现.实现过程分为3个步骤. 步骤1:我们需要在数据库test中建立T_superStar表,并向表中插入三位球星的信息. create table T_superStar