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在读取...