OpenCV教程2(python)
OpenCV教程2(python)
上节我们简单的介绍了⼀下OpenCV操作图⽚,这节我们讲⼀下视频的有关操作。视频和图⽚从某种程度上来讲其实是同⼀种东西,基本上所有的视频都是由⼀帧⼀帧图⽚组成的,操作视频其实就是对每⼀帧的图⽚进⾏操作。
OpenCV基础操作-视频
1.获取视频和播放视频英文名ivy怎么读
还是先上代码,再去解释代码,这样便于学习。
import numpy as np
import cv2
#读取摄像头,若想读取视频,参数0换成视频的路径+⽂件名
cap = cv2.VideoCapture(0)
theater怎么读音发音英语while(True):
ret, frame = ad()
cv2.imshow('frame',frame)
if cv2.waitKey(1)== ord('q'):apache+mysql+php python简单项目
break
cv2.destroyAllWindows()htmlradio如何扩张点击区域
对照前⾯操作图像的代码,是不是发现很像。
cv2.VideoCapture()创建了⼀个VideoCapture对象,⽤来捕获视频。它的参数可以是设备的索引号,或是⼀个视频⽂件。设备的索引号是指定要⽤的摄像头,⼀般内置的摄像头的索引号为0,可以换成1或其他的数字调⽤其他的摄像头。
因为视频是⼀帧⼀帧获取的,所以接下来是个⼀个while True循环,循环读取每⼀帧。
ret, frame = ad()读取每⼀帧,其中ret表⽰⼀个True/False的布尔值,⽤来表⽰是否读取成功。frame表⽰读取到的np.array类型的每⼀帧,就是图⽚。
cv2.imshow('frame',frame)将每⼀帧显⽰在⼀个叫frame的窗⼝上。这⾥解释⼀下,为什么这样显⽰在窗⼝上会产⽣视频的效果。前⾯操作图⽚的时候,我们提到过,显⽰多幅图像的时候,若cv2.imshow()指定相同的窗⼝名,这样后⾯显⽰的图⽚会覆盖前⾯的图⽚,⽽产⽣⼀个窗⼝。这⾥视频显⽰也是同样的道理,每次while循环,窗⼝'frame'的名字不变,这样每⼀帧会覆盖上⼀帧,就产⽣了视频的效果。
if cv2.waitKey(1)== ord('q'):break这⾥程序会等⼀毫秒,只要⽤户没有按下'q'键,程序就会执⾏下⼀个循环,若按下了'q'键,则程序会break跳
出while循环。这⾥可以通过改变cv2.waitKey()⾥⾯的时间参数,来改变视频的播放速度。
补充:
有时cv2.VideoCapture()可能不能成功的初始化摄像头设备。这种情况下代码会报
错。你可以使⽤cap.isOpened(),来检查是否成功初始化了。如果返回值是
True,那就没有问题。否则就要使⽤函数cap.open()。这是while True可以改为jsp格式怎么打开平板
while cap.isOpened()。
函数(propId)可以⽤来获得视频的⼀些参数信息。这⾥
propId 可以是 0 到 18 之间的任何整数。每⼀个数代表视频的⼀个属性:
• CV_CAP_PROP_POS_MSEC Current position of the video file in milliseconds.
• CV_CAP_PROP_POS_FRAMES 0-based index of the frame to be decoded/captured next.
• CV_CAP_PROP_POS_AVI_RATIO Relative position of the video file: 0 - start of the film, 1 - end of the film.
• CV_CAP_PROP_FRAME_WIDTH Width of the frames in the video stream.
• CV_CAP_PROP_FRAME_HEIGHT Height of the frames in the video stream.
• CV_CAP_PROP_FPS Frame rate.
• CV_CAP_PROP_FOURCC 4-character code of codec.
• CV_CAP_PROP_FRAME_COUNT Number of frames in the video file.
• CV_CAP_PROP_FORMAT Format of the Mat objects returned by retrieve() .
• CV_CAP_PROP_MODE Backend-specific value indicating the current capture mode.
• CV_CAP_PROP_BRIGHTNESS Brightness of the image (only for cameras).
• CV_CAP_PROP_CONTRAST Contrast of the image (only for cameras).
• CV_CAP_PROP_SATURATION Saturation of the image (only for cameras).
• CV_CAP_PROP_HUE Hue of the image (only for cameras).
• CV_CAP_PROP_GAIN Gain of the image (only for cameras).
• CV_CAP_PROP_EXPOSURE Exposure (only for cameras).
• CV_CAP_PROP_CONVERT_RGB Boolean flags indicating whether images should be converted to RGB.
• CV_CAP_PROP_WHITE_BALANCE Currently unsupported
• CV_CAP_PROP_RECTIFICATION Rectification flag for stereo cameras (note: only supported by DC1394 v 2.x backend currently)
对应的,使⽤ cap.set(propId,value) 来修改视频属性,value 就是你想要设置成的新值。
2.保存视频
OpenCV保存视频稍稍有点⿇烦,因为保存视频的时候涉及到⼀个格式的问题,普通的视频格式对应的编码器不⼀样,这⾥还需提供编码器。不多说了,直接上代码,从代码中学习。
import numpy as np
import cv2
import sys
cap = cv2.VideoCapture(vb')
#适⽤于OpenCV3,OpenCV2⽤cv2.cv.FOURCC(*'MJPG')
#写成这样也⾏cv2.cv.FOURCC('M','J','P','G')
fourcc = cv2.VideoWriter_fourcc(*'MJPG')
out = cv2.VideoWriter('output.avi',fourcc,20.0,((cv2.CAP_PROP_FRAME_WIDTH)),(cv2.CAP_PROP_FRAME_HEIGHT))))
while cap.isOpened():
ret,frame = ad()
if ret:
out.write(frame)
cv2.imshow('frame',frame)
if cv2.waitKey(1) == ord('q'):
break
else:
break
python入门教程视屏
cv2.destroyAllWindows()
cv2.VideoWriter_fourcc(FourCC)参数FourCC 就是⼀个 4 字节码,⽤来确定视频的编码格式。可⽤的编码列表可以从查到。这种编码格式是依赖于系统平台的,查到的许多编码不⼀定能⽤。
cv2.VideoWriter()创建⼀个VideoWriter的对象。参数⼀:⼀个输出⽂件的名字;参数⼆:FourCC编码;参数三:播放频率;参数四:帧的⼤⼩(视频的长和宽);参数五:是否为彩⾊,True为彩⾊,False为灰度。
接下来while循环⾥就是读取每⼀帧,再向⽬标写⼊每⼀帧了,跟前⾯⼤致相同,这⾥就不多说了。
最后三⾏是关闭读取操作,写⼊操作和相应的显⽰窗⼝。
3.总结
视频操作的基本操作⼤体就这么多了,读者只要明⽩视频操作跟图像操作本质上没有区别。
还有⼀点不是很重要,但是不知道的话,有时遇到问题的话,会很头疼。在OpenCV中读取到彩⾊图⽚是BGR形式的,⽽不是通常所⽤的RGB形式的,有时⽤其他的图像处理库去显⽰OpenCV读取的图像,需要将BGR转为RGB,颜⾊空间转换后⾯会详细讲的。
这⾥有⼈会问了,为什么读取的图⽚是BGR形式的,显⽰出来还是正常的RGB显⽰的呢?
其实,读者要弄明⽩⼀件事,在计算机中存储的图像,包括所有的图像处理时读取的图像,都是以数组或者说是矩阵的形式存在的。存储和读取的时候,计算机和⼈们并不关⼼这个数组或者矩阵是什么样⼦的,计算机和⼈只关⼼怎么去显⽰图像。⽐如,图⽚虽然存储成RGB形式的三通道矩阵,但计算机程序显⽰的时候,程序可以显⽰成RGB,BGR,GBR,BRG….,显⽰这⼀步完全是程序控制的。读者好好体会⼀下,其中的意思。
下⼀节,我们讲⼀下图像的⼀些核⼼操作,主要是对图像的像素操作。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。