【Python入门教程】OpenCV在图片/视频上添加Logo(水印)

您所在的位置:网站首页 抖音怎么把logo放在视频上 【Python入门教程】OpenCV在图片/视频上添加Logo(水印)

【Python入门教程】OpenCV在图片/视频上添加Logo(水印)

2024-05-31 07:19| 来源: 网络整理| 查看: 265

        还是老样子,最近项目需要在视频上添加logo,所以就找了一下相关资料,然后写了一段代码,今天给大家分享一下如何使用Python的OpenCV库给图片或视频添加水印和logo。

一、导入库

        OpenCV库导入的时候是cv2

import cv2 二、代码部分 2.1 基础逻辑 通过二值化阈值筛选出需要的Logo部分将logo部分制作成掩膜使用掩膜和logo范围提取图片的背景使用反向掩膜提取需要的logo部分将背景和logo叠加显示到原图上 2.2 完整代码

        这里我做了三个入参,图片地址、logo地址、logo放缩的尺寸。logo放在左上角,尺寸视情况自己修改。

# -*- coding: utf-8 -*- """ @Time : 2023/10/20 17:34 @Auth : RS迷途小书童 @File :Image_Add_Logo.py @IDE :PyCharm @Purpose:图片/视频添加水印 """ import cv2 def Image_add_logo(image_path, logo_path, size=(403, 161)): image1 = cv2.imread(image_path) image2 = cv2.imread(logo_path) image2 = cv2.resize(image2, size) rows, cols, channels = image2.shape # 获取logo的行列、通道数 roi = image1[0:rows, 0:cols] # 从image1中切割出一个与image2大小相同的区域,作为ROI(Region of Interest) image2gray = cv2.cvtColor(image2, cv2.COLOR_BGR2GRAY) # 将image2转化为灰度图像,以便于进行阈值化处理 ret, mask = cv2.threshold(image2gray, 254, 255, cv2.THRESH_BINARY) # ret阈值被忽略,mask二值化图像。大于254的值赋值为255,小于254的值赋值为0 mask_reverse = cv2.bitwise_not(mask) # 按位取反操作,0变255,255变0 image1_background = cv2.bitwise_and(roi, roi, mask=mask) # 按位与操作,保留掩膜之后的背景 image2_logo = cv2.bitwise_and(image2, image2, mask=mask_reverse) # 按位与操作,保留掩膜之后的logo result = cv2.add(image1_background, image2_logo) # 将背景和logo叠加 image1[0:rows, 0:cols] = result # 将新的图像覆盖到原图像image1的相应位置 # cv2.imshow("Image", image1) # 显示叠加图像 # cv2.waitKey(0) cv2.destroyAllWindows() return image1 if __name__ == "__main__": Image = r"G:\Neat Download Manager\Compressed\video/100000022.png" Logo = r"G:\Neat Download Manager\Compressed\video/logo.png" Size = (604, 242) image = Image_add_logo(Image, Logo, Size) 三、总结

        这个博文没有写如何在视频中添加logo,因为原理是一样的。cv2库在读取视频时就是逐帧读取,所以本质就是图片,我之前已经发过如何使用OpenCV库将视频拆帧成图片,然后如何用图片生成视频,所以这里就不分享了。只要大家将内容组合一下,就可以实现视频添加Logo,链接:基于OpenCV视频分解成图片+图片组合成视频(视频抽帧组帧)



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3