近两天刚好需要操作图片转视频,视频转图片小操作,在网上搜了一些博文发现会存在一些小bug。因此,在这里记录一下直接调好就可以使用的代码。

首先是图片转视频(使用对象:尺寸大小都一样的图片)

import os
import cv2
import numpy as nppath = './Output/'  # 路径设置(ps:路径不要出现中文!)
filelist = os.listdir(path)
filelist = sorted(filelist)  # 按照文件数字进行顺序排序fps = 24  # 视频每秒24帧
size = (512, 512)  # 需要转为视频的图片的尺寸video = cv2.VideoWriter("VideoTest.avi", cv2.VideoWriter_fourcc(*'DIVX'), fps, size)
# 视频保存在当前目录下for item in filelist:if item.endswith('.png'):# 找到路径中所有后缀名为.png的文件,可以更换为.jpg或其它item = path + itemimg = cv2.imread(item)video.write(img)video.release()
cv2.destroyAllWindows()

然后,还是图片转视频,使用对象改变(使用对象:图片尺寸大小不同)

import cv2
import globdef resize(img_array, align_mode):_height = len(img_array[0])_width = len(img_array[0][0])for i in range(1, len(img_array)):img = img_array[i]height = len(img)width = len(img[0])if align_mode == 'smallest':if height < _height:_height = heightif width < _width:_width = widthelse:if height > _height:_height = heightif width > _width:_width = widthfor i in range(0, len(img_array)):img1 = cv2.resize(img_array[i], (_width, _height), interpolation=cv2.INTER_CUBIC)img_array[i] = img1return img_array, (_width, _height)def images_to_video(path):img_array = []for filename in glob.glob(path + '/*.png'):  #图片格式pngimg = cv2.imread(filename)if img is None:print(filename + " is error!")continueimg_array.append(img)# 图片的大小需要一致img_array, size = resize(img_array, 'largest')fps = 2    # 帧率设置out = cv2.VideoWriter('demo.avi', cv2.VideoWriter_fourcc(*'DIVX'), fps, size)for i in range(len(img_array)):out.write(img_array[i])out.release()def main():path = ".Output/"    # 路径(不要带中文的路径!!!)images_to_video(path)if __name__ == "__main__":main()

最后,我们来个视频转图片的代码!

import cv2
import numpy as np# 定义保存图片函数
# image:要保存的图片名字
# addr;图片地址与相片名字的前部分
# num: 图片名字的后缀,int 类型
def save_image(image, addr, num):address = addr + str(num) + '.jpg'cv2.imwrite(address, image)# 读取视频文件
videoCapture = cv2.VideoCapture("./232.avi")# 读帧
success, frame = videoCapture.read()
i = 0
timeF = 40
j = 134
while success:i = i + 1if (i % timeF == 0):j = j + 1save_image(frame, '.\\0', j)print('save image:', i)success, frame = videoCapture.read()

好了,现在我们就已经可以实现图片与视频互相转换啦~~

参考链接:
图片转视频1
图片转视频2

Python-OpenCV实现图片和视频相互转换的简单+实用方法(附代码)相关推荐

  1. 【opencv】opencv在图片、视频嵌中英文字符的方法

    说明:本博文是根据前人已有的成果并结合自己的理解而成的.为了避免让读者感到繁琐,我将运用小学及初中学习的总分总.承上启下的写作技巧进行讲解,力图做到详略有致,言简意赅,图文并茂,通俗易懂. 实验平台: ...

  2. python opencv调节图片亮度与对比度

    python opencv调节图片亮度与对比度 亮度调整是将图像像素的强度整体变大/变小,对比度调整指的是图像暗处变得更暗,亮出变得更亮,从而拓宽某个区域内的显示精度. 创建两个滑动条分别调整对比度和 ...

  3. python opencv 得到图片路径image_path的宽wide、高heigh和深度deep

    python opencv 得到图片路径image_path的宽wide.高heigh和深度deep 图片路径是:'1.jpg' 下面是具体代码: import cv2 #得到图片路径image_pa ...

  4. 2021-01-07 python opencv调节图片亮度与对比度

    python opencv调节图片亮度与对比度 度调整是将图像像素的强度整体变大/变小,对比度调整指的是图像暗处变得更暗,亮出变得更亮,从而拓宽某个区域内的显示精度. 创建两个滑动条分别调整对比度和亮 ...

  5. Python OpenCV去除图片水印

    问题描述 去除百度水印 1.jpg,背景简单 2.jpg,背景复杂 解决方案 安装 pip install opencv-python pip install numpy 方法一.OpenCV提取颜色 ...

  6. python opencv获取图片分辨率_python-opencv遍历图片像素,并对像素进行操作

    看代码: def access_pixels(frame): print(frame.shape) #shape内包含三个元素:按顺序为高.宽.通道数 height = frame.shape[0] ...

  7. Qt - OpenCV 连续图片生成视频

    Qt - OpenCV 连续图片生成视频 此博客始创于:http://blog.csdn.net/lys211 转载请注明出处 主要是测试OpenCV将连续命名的图片转换成视频的过程. OpenCV的 ...

  8. python opencv 裁剪图片_Python图片裁剪的两种方式——Pillow和OpenCV

    在这篇文章里我们聊一下Python实现图片裁剪的两种方式,一种利用了Pillow,还有一种利用了OpenCV.两种方式都需要简单的几行代码,这可能也就是现在Python那么流行的原因吧. OpenCV ...

  9. python cv2 模块图片生成视频

    python cv2 模块图片生成视频 事件起因 在工位上写bug的时候觉得窗外风景不错,iPhone自带的延时摄影会根据时长调整压缩比例,然后想下载一个app拍摄固定比例的延时视频. slow sh ...

最新文章

  1. Debug常用命令 精简版本
  2. oracle 06502 解决,ora-06502如何解决。。。
  3. mysql insert concat_MySQL常用内置函数说明+concat+insert(str,m,n,inser_str)+week(now())+ | 学步园...
  4. git的使用学习(三)时光机穿梭
  5. EndNote批量实现文献标题首字母大写 附最新版endnote下载
  6. 我和乘子交替方向法admm_找到最大和交替子序列
  7. 5月购机指南!新机流畅度排行榜:第一名实至名归
  8. mysql的sql优化工具下载_MySQL SQL查询优化工具EverSQL
  9. java开发之路——个人开发模板之技巧
  10. Object-C 关于「链式编程」与「函数式编程」简单实践
  11. 一秒钟世界上会发生多少事_一秒之中会发生什么
  12. mysql的scm库_CDH集群手动导入scm库
  13. Who is in me? -- Freeware on Windows
  14. xmanager调出图形安装oracle,Xmanager快速连接Linux图形界面教程
  15. 【2011年全国试题3】已知循环队列存储在一维数组A[0…n-1],且队列非空时,front和rear分别指向队头元素和队尾元素。若初始时队列为空,且
  16. 安装pyqt5时报错Preparing metadata (pyproject.toml) ... error
  17. pdf解密工具(超实用)
  18. 红外光谱图解析知识大全(图文并茂)
  19. Angular self study 4 - data entered by end user
  20. xml中处理大于号小于号的方法(Mybatis中大于、小于)

热门文章

  1. 如何学习前端?看这篇就够了
  2. “百思不得姐,满满的干货
  3. java实验报告五_2019JAVA第五周实验报告
  4. 截图工具 Snagit
  5. EXCEL文本框及自定义图形内文本内容检索及替换
  6. JavaScript强化教程——JavaScript 总结
  7. 服务器分区有什么作用,公认很好的无盘网吧服务器硬盘分区划分和使用经验
  8. android c pdf,我把所有Android第三方库整理成了PDF,送大厂面经一份!
  9. 各种资源--可免费下载数据的网站(感觉可以的话来波点赞关注哟)
  10. 【ppt入门教程】如何在ppt幻灯片中插入GIF格式动态图片