opencv实时视频处理,opencv视频播放

  opencv实时视频处理,opencv视频播放

  处理视频由一系列图像组成,这些图像称为帧,帧是以固定的时间间隔从视频中获取的。

  获取(播放)帧的速度称为帧率,其单位通常用“每秒帧数”来表示,表示一秒钟内出现的帧数,对应的英文是FPS(Frames Per Second)。

  如果从视频中提取出独立的一帧,可以通过图像处理对其进行处理,达到处理视频的目的。

  OpenCV提供了cv2。VideoCapture类和cv2。VideoWriter类来支持各种类型的视频文件。

  它们支持的文件类型在不同的操作系统中可能会有所不同,但是AVI格式的视频文件在各种操作系统中都是受支持的。

  视频捕获类cv2。VideoCapture类非常简单快速地处理视频,它可以处理视频文件和摄像机信息。

  cv2的常用函数。VideoCapture类包括初始化、打开、帧捕获、释放、属性设置等。

  初始化

  OpenCV提供了构造函数cv2。cv2的视频捕获()。VideoCapture类,用于打开摄像头,完成摄像头的初始化。

  这个函数的语法格式是:capture object=cv2。视频捕捉(“摄像机ID号”)。“相机ID号”是相机的ID号。注意,这个参数是相机(摄像机)的ID号,不是文件名。默认值为-1,表示随机选择一个摄像头;如果有多台摄像机,数字“0”表示第一台摄像机,数字“1”表示第二台摄像机,依此类推。

  如果只有一台摄像机,则“0”或“-1”可用作摄像机ID号。在某些平台上,如果参数值为“-1”,OpenCV会弹出一个窗口,让用户手动选择想要使用的相机。

  “捕获对象”是返回值,它是cv2的一个对象。视频捕获类。要初始化当前摄像机,您可以使用以下语句:

  Cap=cv2。VideoCapture(0)特别强调:视频处理完后记得释放camera对象。

  这个(构造)函数也可以用来初始化一个视频文件。初始化视频文件时,参数是文件名。

  此时,功能的形式是:

  捕获对象=cv2。VideoCapture(“文件名”)。例如,要在当前目录中打开名为“vtest.avi”的视频文件,可以使用语句:

  cap=cv2 . video capture( vtest . avi )cv2 . video capture . open()函数和cv2.videocapture.isopen()函数

  一般来说,相机的初始化可以通过使用cv2来完成。视频捕捉()函数。

  有时,为了防止初始化错误,可以使用函数cv2.videocapture.isopen()来检查初始化是否成功。

  该函数的语法格式为:retval=cv2 . video capture . iso pened()。该功能将确定当前摄像机是否成功初始化。

  如果成功,返回值retval为真;如果不成功,返回值retval为False如果相机初始化失败,功能cv2。VideoCapture.open()可用于打开摄像头。

  该函数的语法格式为:

  retval=cv2 . video capture . open(index)index是摄像机的ID号。Retval是返回值,当摄像机(或视频文件)成功打开时为真。类似地,函数cv2.videocapture.isopen()和cv2。VideoCapture.open()也可以用来处理视频文件。处理视频文件时,函数cv2的参数。VideoCapture.open()是文件名,其语法格式为:

  Retval=cv2.videocapture.open(文件名)来捕获帧

  相机初始化成功后,可以从相机中捕获帧信息。

  函数cv2。VideoCapture.read()用于捕获帧。这个函数的语法是:retval,image=cv2 . video capture . read()image是返回的捕获帧,如果没有捕获到帧,则值为空。Retval指示捕获是否成功。如果成功,则值为真;如果不成功,那就是假的。发布

  不需要的时候关掉摄像头。函数cv2。VideoCapture.release()用于关闭摄像头。

  这个函数的语法是:None=cv2。VideoCapture .释放()。例如,目前有一个VideoCapture类的object cap。要释放它,可以使用语句:

  cap.release()属性的设置

  您需要获取或更改cv2的属性。VideoCapture类对象。

  函数cv2。VideoCapture.get()用于获取cv2的属性。VideoCapture类对象,其语法格式为:retval=cv2。VideoCapture.get (propId),其中参数propId对应于cv2.videocapture类对象的属性。

  例如,如果有一个cv2。VideoCapture类对象cvc,然后:

  当前帧对象的宽度可以通过CVC . get(cv2 . cap _ prop _ frame _ width)获得。用CVC . get(cv2 . cap _ prop _ frame _ height)可以得到当前框架对象的高度。函数cv2。VideoCapture.set()用于设置cv2的属性。VideoCapture类对象。

  该函数的语法是:

  Retval=cv2。VideoCapture.set (propid,value),其中propId对应cv2.videocapture类对象的属性,value对应propId的值。

  例如,如果有一个cv2。VideoCapture类对象cvc,然后:

  语句ret=CVC . set(cv2 . cap _ prop _ frame _ width,640)将当前帧对象的宽度设置为640像素。ret=CVC . set(cv2 . cap _ prop _ frame _ height,480)语句将当前帧对象的高度设置为480像素。属性值和含义

  2.cv2。VideoCapture.grab()函数和cv2。函数的作用是:同步多个摄像机。

  如果需要读取摄像机的视频数据,最简单的方法就是使用函数cv2。VideoCapture.read()。但是,如果需要同步一组或一台多头摄像机(如立体摄像机或Kinect)的视频数据,则此功能不适用。

  函数cv2。VideoCapture.read()可以理解为由函数cv2组成。VideoCapture.grab()和cv2。VideoCapture.retrieve()。

  函数cv2。VideoCapture.grab()用于指向下一帧,函数cv2。VideoCapture.retrieve()用于解码并返回一帧。因此,函数cv2。VideoCapture.grab()和cv2。VideoCapture.retrieve()可以用来获取多个摄像机的数据。

  函数cv2。VideoCapture.grab()用于指向下一帧,其语法格式为:retval=cv2。VideoCapture.grab()。如果这个函数成功指向下一帧,返回值retval为真。

  函数cv2。VideoCapture.retrieve()用于解码并返回函数v2捕获的视频帧。VideoCapture.grab()。

  该函数的语法格式为:

  Retval,image=cv2 . video capture . retrieve()image为返回的视频帧,如果不成功,则返回空图像。Retval是一个布尔值;如果不成功,将返回False;否则,返回True。对于一组摄像机,您可以使用以下代码来捕获不同摄像机的视频帧:

  success0=cameraCapture0.grab()

  success1=cameraCapture1.grab()

  如果成功0和成功1:

  frame0=cameraCapture0.retrieve()

  Frame1=cameraCapture1.retrieve()像VideoCapture类cv2中的其他函数一样。VideoCapture.grab()和cv2。VideoCapture.retrieve()也可以用来读取视频文件。

  捕捉摄像机视频使用cv2捕捉摄像机视频。视频捕获类。

  根据标题要求,编写如下代码:

  将numpy作为np导入

  导入cv2

  cap=cv2。视频捕获(0)

  while(cap.isOpened()):

  ret,frame=cap.read()

  cv2.imshow(frame ,frame)

  c=cv2.waitKey(1)

  C==27: # ESC键

  破裂

  cap.release()

  2.cv2.destroyAllWindows()播放视频文件。播放视频文件时,需要设置函数cv2的参数值。VideoCapture()添加到视频文件的名称。播放视频时,可以通过设置函数cv2.waitKey()中的参数值来设置播放视频时每一帧的持续时间(停留时间)。

  如果函数cv2.waitKey()中的参数值:

  如果更小,意味着每一帧的停留时间更短,视频播放速度会更快。更大,意味着每帧停留时间更长,视频播放速度会更慢。

  该参数的单位是ms,通常,* *将该参数的值设置为25**。( 1000/25=40)

  例如:使用cv2。播放视频文件的VideoCapture类。

  将numpy作为np导入

  导入cv2

  cap=cv2。视频捕获( viptrain.avi )

  while(cap.isOpened()):

  ret,frame=cap.read()

  cv2.imshow(frame ,frame)

  c=cv2.waitKey(25)

  C==27: # ESC键

  破裂

  cap.release()

  2.cv2。OpenCV中的VideoWriter类可以将图片序列保存为视频文件,修改视频的各种属性,完成视频类型的转换。

  课堂介绍cv2。VideoWriter类常用的成员函数包括:构造函数、write函数等。

  构造器

  OpenCV为cv2提供了一个构造函数。VideoWriter类,用于初始化它。

  该函数的语法格式为:video writer object=cv2 . video writer(filename,fourcc,fps,frame size [,iscolor]) filename指定输出目标视频的存储路径和文件名。如果指定的文件名已经存在,它将被覆盖。Fourcc代表视频编码/解码类型(格式)。

  函数cv2。OpenCV中使用VideoWriter_fourcc()来指定视频编码格式。2.cv2。VideoWriter_fourcc()有4个字符参数。这四个字符参数构成了编码器/解码器的“4字符标记”,每个编码器/解码器都有一个这样的标记。

  常用的几个标记:cv2.videowriter _ fourcc (i , 4 , 2 , 0 )表示未压缩的YUV颜色编码格式,色度子采样为4:2:0。编码格式兼容性好,但生成的文件较大,文件扩展名为。 avi. 2。cvvideowriter _ fourcc (p , I , m , I )表示MPEG-1编码类型,生成的文件扩展名为。 avi. 2。cvvideowriter _ fourcc (x , v , I , d )表示MPEG-4编码类型。如果想要的视频大小是平均的,你可以选择这个参数组合。这种组合生成的文件扩展名为。 avi. 2。cvvideowriter _ fourcc (t , h , e , o )表示Ogg Vorbis编码的类型,文件扩展名为。 ogv. 2。cvvideowriter _ fourcc (f , l , v , I )表示Flash视频,生成的文件扩展名为。猫白血病病毒

  更多字符参数组合:www.fourcc.org

  如果参数fourcc为“-1”,程序运行时会弹出一个对话框,用户可以根据自己的需要选择合适的压缩程序和压缩质量。

  是帧速率。FrameSize是每个框架的长度和宽度。IsColor表示它是否是彩色图像。* *示例:* *以下语句完成cv2的初始化。视频作者课程。

  fourcc=cv2。VideoWriter_fourcc(*XVID )

  out=cv2 . video writer( output . avi ,fourcc,20,(1024,768))如果想通过对话框设置编码/解码格式,可以使用语句:

  fourcc=-1

  out=cv2 . video writer( output . avi ,fourcc,20,(1024,768))写入函数

  2.函数cv2。cv2中的VideoWriter.write()。VideoWriter类用于写入下一个视频帧。

  该函数的语法格式为:none=cv2 . video writer . write(Image)Image是要写入的视频帧。通常,要求彩色图像的格式为BGR模式。

  当调用这个函数时,要写入的视频帧可以直接传入这个函数。

  例如,如果有一个名为frame的视频帧,要将其写入cv2。VideoWriter类对象在上面的例子中被命名出来,使用语句:

  Out.write(frame)上面的语句将把帧传递给一个名为Output.avi的out对象

  释放;排放;发布

  当cv2。VideoWriter类对象不需要,需要释放。

  函数cv2。VideoWriter.release()用于释放这个类对象。

  这个函数的语法格式是:None=cv2。VideoWriter.release()当前有一个对象在cv2之外。VideoWriter类,它可以用下面的语句释放:

  Out.release()保存视频保存视频包括创建对象、编写视频、释放对象。

  创建对象

  在创建对象之前,您需要首先设置参数。设置要保存的具体文件名,例如:filename=out.avi 。使用cv2。VideoWriter_fourcc()来确定编码/解码的类型,例如:fourcc=cv2 . video writer _ fourcc(* xvid )。确定视频的帧率,例如:fps=20。确定视频的长度和宽度,例如:size=(640,480)。然后使用上述参数创建一个对象。例如:

  Out=cv2.videowriter(文件名,fourcc,fps,大小)。当然,您也可以直接在构造函数中创建具有所需参数值的对象。例如:

  Out=cv2.videowriter (out.avi ,fourcc,20,(640,480))编写视频。

  使用函数cv2。VideoWriter.write()将读取的视频帧在创建的对象中写出。使用代码:out.write(frame)释放对象。

  写完后,释放对象。Code: out.release()示例:使用cv2保存摄像机视频文件。视频作者课程。

  将numpy作为np导入

  导入cv2

  cap=cv2。视频捕获(0)

  fourcc=cv2。VideoWriter_fourcc(I , 4 , 2 , 0 )

  out=cv2。视频作者( output.avi ,fourcc,20,(640,480))

  while(cap.isOpened()):

  ret,frame=cap.read()

  如果ret==True:

  out.write(帧)

  cv2.imshow(frame ,frame)

  如果cv2.waitKey(1)==27:

  破裂

  否则:

  破裂

  cap.release()

  out.release()

  2.cv2.destroyAllWindows()运行上述程序,它将捕获当前摄像机的视频内容,并保存在当前目录下名为“output.avi”的视频文件中。

  视频操作的基本视频是由视频帧组成的。视频处理的目的可以通过从视频中提取视频帧,并对其进行图像处理来达到。

  示例:从视频中提取Canny边缘检测结果。

  将numpy作为np导入

  导入cv2

  cap=cv2。视频捕获( viptrain.avi )

  while(cap.isOpened()):

  ret,frame=cap.read()

  frame=cv2。Canny(框架,100,200)

  cv2.imshow(frame ,frame)

  C=cv2.waitKey(1) # 0就是一直等。

  C==27: # ESC键

  破裂

  cap.release()

  cv2.destroyAllWindows()

  风暴中的白杨

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • opencv图像识别数字,opencv 识别
  • opencv图像识别数字,opencv 识别,如何基于opencv实现简单的数字识别
  • opencv图像的旋转角度计算,opencv图像仿射变换
  • opencv图像的旋转角度计算,opencv图像仿射变换,OpenCV图像几何变换之透视变换
  • opencv图像的旋转角度计算,opencv 旋转任意角度
  • opencv图像的旋转角度计算,opencv 旋转任意角度,opencv图片的任意角度旋转实现示例
  • opencv图像处理函数,opencv图像轮廓合并
  • opencv图像处理函数,opencv图像轮廓合并,OpenCV图像处理之七种常用图像几何变换
  • opencv双线性插值函数,opencv 图像插值
  • LBPH人脸识别,基于opencv的人脸识别技术
  • LBPH人脸识别,基于opencv的人脸识别技术,Opencv LBPH人脸识别算法详解
  • ,,OpenCV黑帽运算(BLACKHAT)的使用
  • opencv双线性插值函数,opencv 图像插值,C++ OpenCV实现图像双三次插值算法详解
  • ,,C语言 OpenCV实现柱面投影
  • ,,C++ Opencv imfill孔洞填充函数的实现思路与代码
  • 留言与评论(共有 条评论)
       
    验证码: