最近在做一个项目,最主要的问题是数据量不足,而且很难收取,一般的方法是取得小部分数据,然后对其进行扩容
另外一个就是,用手机等有摄像功能的设备区拍摄一段视频,然后对其进行一阵一阵的读取,功能如下
视频转图像:
import cv2
vc = cv2.VideoCapture('视频图片') #读入视频文件
c=0
rval=vc.isOpened()
#timeF = 1 #视频帧计数间隔频率
while rval: #循环读取视频帧
c = c + 1
rval, frame = vc.read()
# if(c%timeF == 0): #每隔timeF帧进行存储操作
# cv2.imwrite('smallVideo/smallVideo'+str(c) + '.jpg', frame) #存储为图像
if rval:
#img为当前目录下新建的文件夹
cv2.imwrite('img/'+str(c) + '.jpg', frame) #存储为图像
cv2.waitKey(1)
else:
break
vc.release()
注释:img/为保存图像的文件,需要提前创建,不然会报错。‘视频图片为视频的位置(这里视频和代码在同一目录下)’
图像转视频:
他的作用不是太大,但也有用,比如,如果你手头没有截视频的软件,你就可以把视频变为图像,然后把不要的图像删除,把剩余的图片转化为视频,这样就可以实现代码截取视频了,代码如下
import cv2
import glob
fps = 20 #保存视频的FPS,可以适当调整
#可以用(*'DVIX')或(*'X264'),如果都不行先装ffmepg: sudo apt-get install ffmepg
fourcc = cv2.VideoWriter_fourcc(*'MJPG')
#saveVideo.avi是要生成的视频名称,(384,288)是图片尺寸
videoWriter = cv2.VideoWriter('saveVideo111.avi',fourcc,(384,288))#括号可能是中文的,改一下,384,288需要改成你的图片尺寸,不然会报错
#imge存放图片
imgs=glob.glob('imge/*.jpg')
for imgname in imgs:
frame = cv2.imread(imgname)
videoWriter.write(frame)
videoWriter.release()