问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

python中如何使用OpenCv读取视频的某一帧并保存到数组NumPy中

发布网友 发布时间:2022-05-02 15:21

我来回答

2个回答

懂视网 时间:2022-05-10 19:59

这次给大家带来Numpy数组应该怎么保存与读取,Numpy数组保存与读取的注意事项有哪些,下面就是实战案例,一起来看一下。

1. 数组以二进制格式保存

np.save和np.load是读写磁盘数组数据的两个主要函数。默认情况下,数组以未压缩的原始二进制格式保存在扩展名为npy的文件中,以数组a为例

np.save("filename.npy",a)
b = np.load("filename.npy")

利用这种方法,保存文件的后缀名字一定会被置为.npy

2. 存取文本文件

使用 np.savetxt 和 np.loadtxt 只能读写 1 维和 2 维的数组

np.savetxt:将数组写入以某种分隔符隔开的文本文件中

np.loadtxt:指定某种分隔符,将文本文件读入到数组中

np.savetxt("filename.txt",a)
b = numpy.loadtxt("filename.txt", delimiter=',')

3. 保存为二进制文件

使用数组的 tofile 函数可以方便地将数组中数据以二进制的格式写进文件

a.tofile("filename.bin")
b = np.fromfile("filename.bin",dtype = **)

该方法与np.save有几点区别:

tofile函数只能将数组保存为二进制文件,文件后缀名没有固定要求。这种保存方法对数据读取有要求,np.fromfile 需要手动指定读出来的数据的的dtype,如果指定的格式与保存时的不一致,则读出来的就是错误的数据。

tofile函数不能保存当前数据的行列信息,不管数组的排列顺序是C语言格式的还是Fortran语言格式,统一使用C语言格式输出。因此使用 np.fromfile 读出来的数据是一维数组,需要利用reshape指定行列信息。

例如下面的例子所示:

>>> a = np.arange(0,12)
>>> a.shape = 3,4
>>> a
array([[ 0, 1, 2, 3],
 [ 4, 5, 6, 7],
 [ 8, 9, 10, 11]])
>>> a.tofile("a.bin")
>>> b = np.fromfile("a.bin", dtype=np.float) # 按照float类型读入数据
>>> b # 读入的数据是错误的
array([ 2.12199579e-314, 6.36598737e-314, 1.06099790e-313,
 1.48539705e-313, 1.90979621e-313, 2.33419537e-313])
>>> a.dtype # 查看a的dtype
dtype('int32')
>>> b = np.fromfile("a.bin", dtype=np.int32) # 按照int32类型读入数据
>>> b # 数据是一维的
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
>>> b.shape = 3, 4 # 按照a的shape修改b的shape
>>> b
array([[ 0, 1, 2, 3],
 [ 4, 5, 6, 7],
 [ 8, 9, 10, 11]])

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

推荐阅读:

Python Numpy如何操作数组和矩阵

Python实现求解最大公约数的方法

热心网友 时间:2022-05-10 17:07

1:可以使用opencv读取。
2:其代码如下:

#includehighgui.h
#includecv.h
//从摄像头中读入数据
int main(int argc,char** argv)
{
cvNamedWindow(Example1,CV_WINDOW_AUTOSIZE);
CvCapture* capture; //初始化一个CvCapture结构的指针
if(argc==1)
{
capture=cvCaptureFromCAM(0);//如果参数为1,则从摄像头中读入数据,并返回一个CvCapture的指针
} //注:《学习OpenCV》中此处用cvCreateCameraCapture为错
else
{
capture=cvCreateFileCapture(argv[1]);
}
assert(capture!=NULL); //断言(assert)使用,检查capture是否为空指针,为假时程序退出,并打印错误消息
IplImage* frame;
while(1)
{
frame=cvQueryFrame(capture);//用于将下一帧视频文件载入内存(实际是填充和更新CvCapture结构中),返回一个对应当前帧的指针
if(!frame)
break;
cvShowImage(Example1,frame);
char c=cvWaitKey(33);
if(c==27) break; //出发ESC键退出循环,读入数据停止
}
cvReleaseCapture(capture);//释放内存
cvDestroyWindow(Example1);
}
python opencv 批量旋转图像,使 图像内容不改变,并保存

import os import cv2 from math import import numpy as np path_old ='G:'degrees=[]for k in range(1,25):degrees.append(k*15)for item in os.listdir(path_old):in_imgpath = path_old + item out_name = os.path.splitext(item)[0]print(in_imgpath)

summer days提取动画

在这里对帧进行处理,例如提取前景物体 将处理后的帧写入输出视频文件 out.write(frame)释放资源 cap.release()out.release()```在上述代码中,我们使用 OpenCV 库读取视频文件,并获取视频的帧率。然后创建一个 VideoWriter 对象,用于将处理后的帧写入输出视频文件。在循环中,我们读取视频的每一帧,并...

Python中的图像处理cv2库用法介绍

pip install opencv-python 在编程中,导入cv2库是第一步,确保已正确导入:import cv2 cv2提供了丰富的接口,包括图像的读取、显示、保存以及各种处理操作,如:读取图像:通过img = cv2.imread('path_to_image'),将图像文件转换为numpy数组。显示图像:使用cv2.imshow('window_name', img)在新窗口中...

Opencv findcontours函数原理,以及python numpy实现

在实现过程中,需要定义输入图片,初始化NBD为1,LNBD为1。在每一行扫描开始时,LNBD重置为1。根据当前扫描到的像素值,不断更新当前点,并绕着该点逆时针旋转寻找下一点,并不断更新像素值。在实现过程中,遇到了一个问题,即当像素左边和右边同时为0时,需要进行特殊处理。因为轮廓是逆时针寻找,所...

如何在Python中使用OpenCV的

1.下载Python,当前OPencv版本为249,不过其支持的最新版本的Python为2.7,所以可以下载276版本。2.下载numpy,开始我使用了1.6,没有通过,错误如图。下载了最新的1.8.1版本。3.将Opencv安装目录下opencv\build\python\2.7\x86中的cv2.pyd复制到python安装目录Lib\site-packages下。4.找到opencv源...

python读取显示图像的三种方法

OpenCV和Matplotlib读取的图像通常是numpy.ndarray类型,可以直接操作。然而,Pygame的处理稍微复杂一些。首先,你需要通过pygame.image.load加载图像,图像类型为Surface。由于pygame的屏幕更新机制,你需要在while循环中使用pygame.display.flip()不断重绘,以避免图像叠加。为了实现动画效果,你需要定期调用screen....

怎么在pyvtcolor

首先,要进行图像处理,必须导入OpenCV的基本库,这通常通过以下代码完成:在Python中,引入OpenCV的基本操作是第一步,代码如下:1import cv2 2image = cv2.imread('your_image_path')3gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)4gray_image = np.where(gray_image == 0, 0, gray_...

python+opencv实现图片/短视频一键去水印

对于视频处理,循环读取每一帧,对每一帧进行去水印,将结果写入新的视频。用户可以通过按下's'键停止处理并保存输出。最后,记得释放资源并关闭所有窗口。总的来说,Python和OpenCV的结合提供了强大的图像处理能力,使你能够便捷地去除图片和视频中的水印,提升视觉效果。通过本文提供的步骤,你将能够亲手...

数字图像处理-第一章:图像的基本操作-第一节:图像的读取与保存

在处理过程中,需要注意OpenCV的跨平台性,其图像数据结构Mat类背后是C++实现,但在Python中通过Numpy数组操作。图像读取可能返回空矩阵,而非报错,如果文件不存在或格式不支持。彩色图像默认按BGR顺序存储,可通过设置flags参数转换为灰度图像。图像保存使用cv.imwrite函数,它根据文件扩展名决定保存格式,支持...

OpenCV使用VideoCapture处理视频时丢失最后一些帧

通过使用时间而非帧数来定位,避免直接使用set()方法设置帧数,可以避免这一问题。为解决此问题,一种方法是改用skvideo库。skvideo.io.vread(path)能按numpy格式读取整个视频,避免了上述问题,适用于小视频片段。对于大视频,可使用skvideo.io.vreader(path)逐帧读取,更加快速。然而,skvideo在读取...

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
离焦和普通镜片的区别 昨夜星辰昨夜风,画楼西畔桂堂东.身无彩凤双飞翼,心有灵犀壹点通 后面的... “昨夜星辰昨夜风,画楼西畔桂堂东。”是什么意思_出处及原文翻译_学 ... 春捂养生吃什么?春不捂好易宫寒严重者或致不孕! 吃什么滋阴养颜 四种滋阴的食物最适合女性主妇网 5种食物来帮忙,滋阴补肾更健康 十大滋阴补气保健食材推荐 女性滋阴润燥最好的10种补品有哪些_百度知 ... 500g肉松紫米饭团的大小 下雨天的心情说说经典 三文鱼的胆固醇高吗 想办北京居住证 社保卡房东合同劳动合同没有身份证挂丢失怎么办刚 怎么把numpy数组存到csv中 深圳社保卡挂失及补办 社保卡办居住证需要什么程序 身份证,居住证,社保卡等丢了怎么办 社保卡.身份证.居住证丢失怎么补办啊?急需知道!!! 深圳居住证办理,交了社保,但是社保卡掉了,请问如何办理居住证,是否要去社保局*明? 一个一天能领取多少红包,限制额度吗? 一个一天能领取多少红包,限制额度吗? 什么是非阵发性交界性心动过速的心电图? 室上性心动过速和房速怎样鉴别 一个每天最多可以接收多少钱的红包? 阵发性室性心动过速分哪些类型,其心电图有何特点? 阵发性室上性心动过速的心电图特点(或)表现为 什么是室性阵发性心动过速的心电图? 简述阵发性室上性心动过速的心电图特点 阵发性室上性心动过速的心电图特点 常用20种异常心电图及其特点 一个每天最多可以接收多少钱的红包? 室上速心电图有什么特点 身份证丢了,社保卡可以办理居住证吗? 收到记帐卡没有钱ETC扣款失败的信息,己存款到银行卡,会不会拉黑? 社保卡还没有办理下来,可以办理居住证吗 在哪些方面,Numpy的速度反而比不上原始Python 社保卡能够代替身份证办理暂住证吗?身分证遗失了 关于numpy加载.npy数据,numpy新手求指点一下 python用numpy加载超过200M的文本数据就会报内存错误怎么办 ios7 怎么群发短信 win7系统下全屏游戏麦克风没声音 iPhone5,iOS7怎么群发短信? 苹果7plus群发只能200条怎么选 WIN7麦克风没声音求救! iphone5s在ios7下如何发群发短信 谁知道劳动能力鉴定申请时限是多久? iso7如何群发短信 劳动能力鉴定有时间限制吗 w7系统麦克风没声音怎么设置 劳动能力鉴定申请时效是多久 劳动能力鉴定时间是在工作多少年之后 劳动能力鉴定的时效是多长