python-opencv将视频逐帧切分为图片

直接写:

import cv2
numFrame = 0
    while True:
    # 函数cv2.VideoCapture.grab()用来指向下一帧,其语法格式为:
    # 如果该函数成功指向下一帧,则返回值retval为True
    if video_cap.grab():
    # 函数cv2.VideoCapture.retrieve()用来解码,并返回函数cv2.VideoCapture.grab()捕获的视频帧。该函数的语法格式为:
    # retval, image = cv2.VideoCapture.retrieve()image为返回的视频帧,如果未成功,则返回一个空图像。retval为布尔类型,若未成功,返回False;否则返回True
        flag, frame = video_cap.retrieve()
        if not flag:
            continue
        else:
            numFrame += 1
            #设置图片存储路径
            newPath = ("/mnt/weijie/VToonify-T-M/output/output/") + str(numFrame).zfill(5) + ".jpg"
            #注意这块利用.zfill函数是为了填充图片名字,即如果不加这个,那么图片排序后大概就是1.png,10.png,...2.png,这种顺序合成视频就会造成闪烁,因此增加zfill,变为00001.png,00002.png;可以根据生成图片的数量大致调整zfill的值
            # cv2.imencode()函数是将图片格式转换(编码)成流数据,赋值到内存缓存中;主要用于图像数据格式的压缩,方便网络传输。
            cv2.imencode('.jpg', frame)[1].tofile(newPath)
            print(numFrame)
    else:
        break
print("This part is ok")

定义为函数:

import cv2
def getpic(videoPath, svPath):#两个参数,视频源地址和图片保存地址
    cap = cv2.VideoCapture(videoPath)

    numFrame = 0
    while True:
        # 函数cv2.VideoCapture.grab()用来指向下一帧,其语法格式为:
        # 如果该函数成功指向下一帧,则返回值retval为True
        if cap.grab():
            # 函数cv2.VideoCapture.retrieve()用来解码,并返回函数cv2.VideoCapture.grab()捕获的视频帧。该函数的语法格式为:
            # retval, image = cv2.VideoCapture.retrieve()image为返回的视频帧,如果未成功,则返回一个空图像。retval为布尔类型,若未成功,返回False;否则返回True
            flag, frame = cap.retrieve()
            if not flag:
                continue
            else:
                numFrame += 1
                #设置图片存储路径
                newPath = svPath + str(numFrame).zfill(5) + ".jpg"
                #注意这块利用.zfill函数是为了填充图片名字,即如果不加这个,那么图片排序后大概就是1.png,10.png,...2.png,这种顺序合成视频就会造成闪烁,因此增加zfill,变为00001.png,00002.png;可以根据生成图片的数量大致调整zfill的值
                # cv2.imencode()函数是将图片格式转换(编码)成流数据,赋值到内存缓存中;主要用于图像数据格式的压缩,方便网络传输。
                cv2.imencode('.jpg', frame)[1].tofile(newPath)
                print(numFrame)
        else:
            break
getpic("test.mp4", "G:/zanshipic/")
print("all is ok")

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值