python视频处理的第三方库_Python视频处理库:scikit-video

安装

$ sudo pip install sk-video

视频的读写

读视频

import skvideo.io

import skvideo.datasets

import numpy as np

# read video as a single ndarray

videodata = skvideo.io.vread(skvideo.datasets.bigbuckbunny())

print(videodata.shape)

# read video frame by frame

videogen = skvideo.io.vreader(skvideo.datasets.bigbuckbunny())

for frame in videogen:

print(frame.shape)

# set keys and values for parameters in ffmpeg

inputparameters = {}

outputparameters = {}

reader = skvideo.io.FFmpegReader(skvideo.datasets.bigbuckbunny(),

inputdict=inputparameters,

outputdict=outputparameters)

# iterate through the frames

accumulation = 0

for frame in reader.nextFrame():

# do something with the ndarray frame

accumulation += np.sum(frame)

写视频

import skvideo.io

import skvideo.datasets

import numpy as np

# write an ndarray to a video file

outputdata = np.random.random(size=(30,480,680,3)) * 255

outputdata = outputdata.astype(np.uint8)

skvideo.io.vwrite("outputvideo.mp4", outputdata)

# FFmpeg writer (报错)

outputdats = np.random.random(size=(5,480,680,3)) * 255

outputdata = outputdata.astype(np.uint8)

writer = skvideo.io.FFmpegWriter("outputvideoplus.mp4",(5,480,640,3))

for i in xrange(5):

writer.writeFrame(outputdata[i,:,:,:])

writer.close()

ffmpeg写报错,writer = skvideo.io.FFmpegWriter("outputvideoplus.mp4",(5,480,640,3)),TypeError: 'tuple' object does not support item assignment

读视频元数据(metadata)

import skvideo.io

import skvideo.datasets

import json

metadata = skvideo.io.ffprobe(skvideo.datasets.bigbuckbunny())

print(metadata.keys())

print(json.dumps(metadata['video'], indent=4))

运动

import skvideo.io

import skvideo.motion

import skvideo.datasets

videodata = skvideo.io.vread(skvideo.datasets.bigbuckbunny(),num_frames=5)

motion = skvideo.motion.blockMotion(videodata)

print(videodata.shape)

print(motion.shape)

# compensate the video

compensate = skvideo.motion.blockComp(videodata, motion)

# write

skvideo.io.vwrite("compensate.mp4", compensate)

测量

import skvideo.io

import skvideo.motion

import skvideo.datasets

import skvideo.measure

# compute vectors from bigbuckbunny

videodata = skvideo.io.vread(skvideo.datasets.bigbuckbunny(),num_frames=5,as_grey=True)

# videodata = skvideo.io.vread(skvideo.datasets.bigbuckbunny())

# skvideo.io.vwrite("origin.mp4", videodata)

motion = skvideo.motion.blockMotion(videodata)

print(videodata.shape)

print(motion.shape)

# compensate the video

compensate = skvideo.motion.blockComp(videodata, motion)

# write

skvideo.io.vwrite("compensate.mp4", compensate)

print(skvideo.measure.ssim(videodata,compensate))

print(skvideo.measure.psnr(videodata,compensate))

print(skvideo.measure.mse(videodata,compensate))

读写图片

import skvideo.io

# a frame from the bigbuckbunny sequence

vid = skvideo.io.vread('/home/shuai/python_test/output.png')

T, M, N, C = vid.shape

print("Number of frames: %d" % (T,))

print("Number of rows: %d" % (M,))

print("Number of cols: %d" % (N,))

print("Number of channels: %d" % (C,))

# upsacle by a factor of 2

vid = skvideo.io.vread('/home/shuai/python_test/output.png',

outputdict={

"-sws_flags":"bilinear",

"-s":"2560x1440"

})

T, M, N, C = vid.shape

print("Number of frames: %d" % (T,))

print("Number of rows: %d" % (M,))

print("Number of cols: %d" % (N,))

print("Number of channels: %d" % (C,))

skvideo.io.vwrite("outputplus.png", vid)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值