逐帧P视频水印

2023-10-11 02:59
文章标签 视频 水印 逐帧

本文主要是介绍逐帧P视频水印,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.实现功能:

(1)读取本地视频

(2)逐帧鼠标左键框选水印部分,覆盖为白色

(3)按按键‘y’,'Y'使用上一次位置的框覆盖此次的水印

(4)按其他按键表示不处理当前帧

2.调库

import cv2
import numpy as np
import easygui
import copy

 3.完整源码

import cv2
import numpy as np
import easygui
import copyglobal frame, point1, point2, key
key = False
point1 = point2 = (0,0)videopath = easygui.fileopenbox()
cap = cv2.VideoCapture(videopath)
if not cap.isOpened():easygui.msgbox("video read failure")exit(0)video_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
video_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
fps = cap.get(cv2.CAP_PROP_FPS)
fourcc = int(cap.get(cv2.CAP_PROP_FOURCC))cv2.namedWindow('result')def Rectangular_box(event, x, y, flags, param):global frame, point1, point2img = frame.copy()if event == cv2.EVENT_LBUTTONDOWN:point1 = (x, y)cv2.circle(img, point1, 10, (0, 255, 0), 5)cv2.imshow('result', img)elif event == cv2.EVENT_MOUSEMOVE and (flags & cv2.EVENT_FLAG_LBUTTON):cv2.rectangle(img, point1, (x, y), (255, 0, 0), 5)cv2.imshow('result', img)elif event == cv2.EVENT_LBUTTONUP:point2 = (x, y)cv2.rectangle(img, point1, point2, (0, 255, 255), 4)mask = np.zeros([video_height,video_width,3],np.uint8)max_h = point1[1] if point1[1]>point2[1] else point2[1]min_h = point1[1] if point1[1]<point2[1] else point2[1]max_w = point1[0] if point1[0]>point2[0] else point2[0]min_w = point1[0] if point1[0]<point2[0] else point2[0]for i in range(min_h,max_h):for j in range(min_w,max_w):mask[i][j] = [255,255,255]img = cv2.add(frame, mask)cv2.imshow('result', img)cv2.setMouseCallback('result', Rectangular_box)while cap.isOpened():ret, frame = cap.read()if not ret:breakif key and point1 != (0,0) and point2 != (0,0):mask = np.zeros([video_height,video_width,3],np.uint8)max_h = point1[1] if point1[1]>point2[1] else point2[1]min_h = point1[1] if point1[1]<point2[1] else point2[1]max_w = point1[0] if point1[0]>point2[0] else point2[0]min_w = point1[0] if point1[0]<point2[0] else point2[0]for i in range(min_h,max_h):for j in range(min_w,max_w):mask[i][j] = [255,255,255]frame = cv2.add(frame, mask)cv2.imshow('result', frame) k = cv2.waitKey(0)if k == ord('y') or k == ord('Y'):key = Trueelse:key = Falsecap.release()
cv2.destroyAllWindows()

4.未完成

保存视频

5.参考文章

(1条消息) opencv进阶学习笔记6:使用鼠标在图像上绘制矩形框或者多边形框_总裁余(余登武)的博客-CSDN博客_opencv鼠标绘制多边形icon-default.png?t=M3K6https://blog.csdn.net/kobeyu652453/article/details/107309456EasyGUI 学习文档【超详细中文版】(from小甲鱼 ) - 廖海清 - 博客园 (cnblogs.com)icon-default.png?t=M3K6https://www.cnblogs.com/hale547/p/13301951.html

这篇关于逐帧P视频水印的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/185032

相关文章

Java如何获取视频文件的视频时长

《Java如何获取视频文件的视频时长》文章介绍了如何使用Java获取视频文件的视频时长,包括导入maven依赖和代码案例,同时,也讨论了在运行过程中遇到的SLF4J加载问题,并给出了解决方案... 目录Java获取视频文件的视频时长1、导入maven依赖2、代码案例3、SLF4J: Failed to lo

Python实现多路视频多窗口播放功能

《Python实现多路视频多窗口播放功能》这篇文章主要为大家详细介绍了Python实现多路视频多窗口播放功能的相关知识,文中的示例代码讲解详细,有需要的小伙伴可以跟随小编一起学习一下... 目录一、python实现多路视频播放功能二、代码实现三、打包代码实现总结一、python实现多路视频播放功能服务端开

Python实现视频转换为音频的方法详解

《Python实现视频转换为音频的方法详解》这篇文章主要为大家详细Python如何将视频转换为音频并将音频文件保存到特定文件夹下,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. python需求的任务2. Python代码的实现3. 代码修改的位置4. 运行结果5. 注意事项

Python视频处理库VidGear使用小结

《Python视频处理库VidGear使用小结》VidGear是一个高性能的Python视频处理库,本文主要介绍了Python视频处理库VidGear使用小结,文中通过示例代码介绍的非常详细,对大家的... 目录一、VidGear的安装二、VidGear的主要功能三、VidGear的使用示例四、VidGea

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

《x86汇编语言:从实模式到保护模式》视频来了

《x86汇编语言:从实模式到保护模式》视频来了 很多朋友留言,说我的专栏《x86汇编语言:从实模式到保护模式》写得很详细,还有的朋友希望我能写得更细,最好是覆盖全书的所有章节。 毕竟我不是作者,只有作者的解读才是最权威的。 当初我学习这本书的时候,只能靠自己摸索,网上搜不到什么好资源。 如果你正在学这本书或者汇编语言,那你有福气了。 本书作者李忠老师,以此书为蓝本,录制了全套视频。 试

SAM2POINT:以zero-shot且快速的方式将任何 3D 视频分割为视频

摘要 我们介绍 SAM2POINT,这是一种采用 Segment Anything Model 2 (SAM 2) 进行零样本和快速 3D 分割的初步探索。 SAM2POINT 将任何 3D 数据解释为一系列多向视频,并利用 SAM 2 进行 3D 空间分割,无需进一步训练或 2D-3D 投影。 我们的框架支持各种提示类型,包括 3D 点、框和掩模,并且可以泛化到不同的场景,例如 3D 对象、室

树莓派5_opencv笔记27:Opencv录制视频(无声音)

今日继续学习树莓派5 8G:(Raspberry Pi,简称RPi或RasPi)  本人所用树莓派5 装载的系统与版本如下:  版本可用命令 (lsb_release -a) 查询: Opencv 与 python 版本如下: 今天就水一篇文章,用树莓派摄像头,Opencv录制一段视频保存在指定目录... 文章提供测试代码讲解,整体代码贴出、测试效果图 目录 阶段一:录制一段

基于树梅派的视频监控机器人Verybot

最近这段时间做了一个基于树梅派 ( raspberry pi ) 的视频监控机器人平台 Verybot ,现在打算把这个机器人的一些图片、视频、设计思路进行公开,并且希望跟大家一起研究相关的各种问题,下面是两张机器人的照片:         图片1:                   图片2                    这个平台的基本组成是: