python 给视频添加马赛克
用法:
1. 创建空文件夹:imgs
2. 将倒数第三行中的"222056.mov"改为你的视频路径,如:"a.mov"
3. 运行以下代码
4. 稍等片刻,鼠标拖动选择添加马赛克区域,按enter确定(每次操作只能添加一个马赛克区域,视频会根据所选区域全程添加马赛克)
5. 稍等片刻,'a.avi '就是做好的视频文件,!!!注意!!!该视频文件没有音频
展望:
可以结合opencv的图像修复功能实现消除图标,效果比一坨马赛克好上不知几倍!有空再搞……
源码:
import cv2, os
import numpy as np def video2img(videoroot):
cap = cv2.VideoCapture(videoroot)
isOpened = cap.isOpened # 判断是否打开‘
print(isOpened)
fps = cap.get(cv2.CAP_PROP_FPS) #帧率
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
print(fps,width,height)
i = 0
while(isOpened):
i += 1
(flag,frame) = cap.read() # 读取每一张 flag frame
fileName = './imgs/image'+str(i)+'.jpg'
print(fileName)
if flag == True:
frame = np.rot90(frame, 1)
cv2.imwrite(fileName,frame)
else:
break
return fps def img2video(outvideoroot, fps):
img = cv2.imread('./imgs/image1.jpg')
imgInfo = img.shape
size = (imgInfo[1],imgInfo[0])
print(size)
fourcc = cv2.VideoWriter_fourcc(*'XVID')
videowriter = cv2.VideoWriter(outvideoroot,fourcc,fps,size)
list_imgs = os.listdir('./imgs')
for i in range(1, len(list_imgs)):
fileName = './imgs/image'+str(i)+'.jpg'
img = cv2.imread(fileName)
videowriter.write(img) def get_xoy():
imgsroot = './imgs'
list_ = os.listdir(imgsroot)
for n in list_:
path_ = os.path.join(imgsroot, n)
img = cv2.imread(path_)
bbox = cv2.selectROI('selectroi', img)
break
return bbox def fitsign():
box = get_xoy()
xo, yo, w, h = box[0], box[1],box[2],box[3],
print(box)
dstroot = './imgs'
dstlist = os.listdir(dstroot)
kernel_size = (41, 41)
sigma = 50
for n in dstlist:
path_ = os.path.join(dstroot, n)
img = cv2.imread(path_)
crop = img[yo:yo+h, xo:xo+w, :]
crop = cv2.GaussianBlur(crop, kernel_size, sigma)
# crop = cv2.blur(crop, (41,41))
img[yo:yo+h, xo:xo+w, :] = crop
cv2.imwrite(path_, img) if __name__ == "__main__":
fps = video2img("222056.mov")
fitsign()
img2video('a.avi', fps)
python 给视频添加马赛克的更多相关文章
- 使用Kdenlive为视频加入马赛克特效
Kdenlive(KDE Non-Linear Video Editor)是一种基于MLT框架.KDE和Qt的自由开源的非线性影片编辑器.其底层包含了FFmpeg,所以可以支持FFmpeg中的所有视频 ...
- [原创]使用python对视频/音频文件进行详细信息采集,并进行去重操作
[原创]使用python对视频/音频文件进行详细信息采集,并进行去重操作 转载请注明出处 一.关于为什么用pymediainfo以及pymediainfo的安装 使用python对视频/音频文件进行详 ...
- ffmpeg为视频添加时间戳 - 手动编译ffmpeg
FFMPEG给视频加时间戳水印 项目中需要给视频添加时间戳,理所当然最好用的办法是ffmpeg.在找到正确的做法前,还被网上的答案timecode给水了一下(水的不轻,在这里转了2天),大概是这样写的 ...
- 视频软件TurboDemo 教程:如何为视频添加旁白和音乐
在前面的文章中,已经对视频软件TurboDemo如何快速的捕捉屏幕和视频编辑做了一些了解,本文主要来了解如何为视频添加旁白和音乐. Slide Timing 在Player Controls窗口中的单 ...
- Python之list添加新元素、删除元素、替换元素
Python之list添加新元素 现在,班里有3名同学: >>> L = ['Adam', 'Lisa', 'Bart'] 今天,班里转来一名新同学 Paul,如何把新同学添加到现有 ...
- 视频特效制作:如何给视频添加边框、水印、动画以及3D效果
2014-12-08 09:47 编辑: suiling 分类:iOS开发 来源:叶孤城的blog 招聘信息: iOS手机软件开发工程师 iOS工程师 Web后端高级开发工程师 iOS软件工程师 ja ...
- Python远程视频监控
Python远程视频监控程序 老板由于事务繁忙无法经常亲临教研室,于是让我搞个监控系统,让他在办公室就能看到教研室来了多少人.o(>﹏<)o||| 最初我的想法是直接去网上下个软件,可 ...
- 【跟着stackoverflow学Pandas】 - Adding new column to existing DataFrame in Python pandas - Pandas 添加列
最近做一个系列博客,跟着stackoverflow学Pandas. 以 pandas作为关键词,在stackoverflow中进行搜索,随后安照 votes 数目进行排序: https://stack ...
- Python 集合set()添加删除、交集、并集、集合操作详解
集合:一个集合中,任何两个元素都认为是不相同的,即每个元素只能出现一次.每个元素的地位都是相同的,元素之间是无序的. 创建集合set python set类是在python的sets模块中,大家现在使 ...
随机推荐
- Redis 入门到分布式 (五) Redis持久化的取舍和选择
个人博客网:https://wushaopei.github.io/ (你想要这里多有) Redis持久化的取舍和选择 持久化的作用 RDB AOF RDB和AOF的选择 一.持久化的作用 ...
- Spring ( 二 ) IOC 依赖注入
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 1.什么是IOC IOC 全称指的是 Inverse Of Control 控制反转. 原来我们使用Sp ...
- (Java实现)洛谷 P2095 营养膳食
题目描述 Mr.L正在完成自己的增肥计划. 为了增肥,Mr.L希望吃到更多的脂肪.然而也不能只吃高脂肪食品,那样的话就会导致缺少其他营养.Mr.L通过研究发现:真正的营养膳食规定某类食品不宜一次性吃超 ...
- Java实现蓝桥杯模拟空地长草
问题描述 小明有一块空地,他将这块空地划分为 n 行 m 列的小块,每行和每列的长度都为 1. 小明选了其中的一些小块空地,种上了草,其他小块仍然保持是空地. 这些草长得很快,每个月,草都会向外长出一 ...
- Java实现 LeetCode 76 最小覆盖子串
76. 最小覆盖子串 给你一个字符串 S.一个字符串 T,请在字符串 S 里面找出:包含 T 所有字母的最小子串. 示例: 输入: S = "ADOBECODEBANC", T = ...
- java实现字符串比较
标题:字符串比较 我们需要一个新的字符串比较函数compare(s1, s2). 对这个函数要求是: 1. 它返回一个整数,表示比较的结果. 2. 结果为正值,则前一个串大,为负值,后一个串大,否则, ...
- PAT 旧键盘
旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现.现在给出应该输入的一段文字.以及实际被输入的文字,请你列出肯定坏掉的那些键. 输入格式: 输入在 2 行中分别给出应该输入的文字.以及 ...
- 给Linux小白的CentOS8.1基本安装说明
写在前面的话:用过Linux的同学应该都会觉得Linux安装是件非常简单的事情,根本不值得用博客记下来!但是我发现,其实没接触过Linux的同学还真不一定会装,就像在IT行业工作过几年但一直用Wind ...
- WPF样式学习第一天
因为上班的公司要我用wpf写软件,刚毕业出来,学校也没教过wpf,只会winform,再加上wpf用winform的框架写法也能实现很多需求,但是就不能体现wpf的优点了,今天就先来学wpf的样式,因 ...
- MySQL 8.0 yum安装和配置
MySQL 8.0 centos7.5 x86_64 一.yum安装 1.先卸载机器和mysql有关的东西,有的安装了mariab-lib,会对安装有干扰,卸载了它. [root@localhost ...