当前位置: 首页 > news >正文

opencv实现给图像加上logo图像

要用Python和OpenCV给图片加上logo,可以按照以下步骤实现:

  1. 读取logo和image图片。

  2. 调整logo的大小以适应image。

  3. 将logo放置在image的指定位置。

  4. 将logo和image合并。

以下是实现代码:

import cv2# 读取logo和image图片
logo = cv2.imread('logo.png', cv2.IMREAD_UNCHANGED)  # 读取带透明通道的logo
image = cv2.imread('image.jpg')# 检查图片是否成功读取
if logo is None or image is None:print("图片读取失败,请检查文件路径是否正确。")exit()# 获取logo的尺寸
logo_height, logo_width, logo_channels = logo.shape# 获取image的尺寸
image_height, image_width, image_channels = image.shape# 调整logo的大小(例如,将logo的宽度设置为image宽度的1/5)
scale = 0.2  # 调整比例
new_width = int(image_width * scale)
new_height = int(logo_height * (new_width / logo_width))
logo = cv2.resize(logo, (new_width, new_height))# 获取调整后logo的尺寸
logo_height, logo_width, logo_channels = logo.shape# 计算logo在image中的位置(例如,右下角)
x_offset = image_width - logo_width - 10  # 右下角,留10像素的边距
y_offset = image_height - logo_height - 10# 提取logo的alpha通道(透明度)
alpha_logo = logo[:, :, 3] / 255.0
alpha_image = 1.0 - alpha_logo# 将logo叠加到image上
for c in range(0, 3):  # 遍历RGB通道image[y_offset:y_offset + logo_height, x_offset:x_offset + logo_width, c] = (alpha_logo * logo[:, :, c] +alpha_image * image[y_offset:y_offset + logo_height, x_offset:x_offset + logo_width, c])# 保存结果
cv2.imwrite('image_with_logo.jpg', image)# 显示结果(可选)
cv2.imshow('Image with Logo', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

代码说明:

  1. 读取图片:使用cv2.imread读取logo和image图片。注意,logo图片需要是带有透明通道的PNG格式,因此使用cv2.IMREAD_UNCHANGED读取。

  2. 调整logo大小:根据image的尺寸,调整logo的大小。

  3. 计算logo位置:将logo放置在image的右下角,并留出一定的边距。

  4. 叠加logo:使用alpha通道(透明度)将logo叠加到image上。

  5. 保存和显示结果:将结果保存为新图片,并可选地显示出来。

注意事项:

  • 确保logo图片是PNG格式,且带有透明通道。

  • 如果logo图片没有透明通道,可以跳过alpha通道的处理部分,直接将logo叠加到image上。

运行代码后,image_with_logo.jpg将是带有logo的image图片。

http://www.lryc.cn/news/503608.html

相关文章:

  • 亚马逊云科技2024 re:Invent大会亮点:Nova大模型与AI基础设施全面升级
  • 总结与提升
  • 入门pytorch-Transformer
  • 泛型编程--
  • 【大语言模型】LangChain 核心模块介绍(Agents)
  • 19C-RAC 环境mgmtca.trc.1过大
  • 基于Spring Boot的同城宠物照看系统的设计与实现
  • 爬虫学习案例5
  • 视频监控汇聚平台方案设计:Liveweb视频智能监管系统方案技术特点与应用
  • ansible自动化运维(三)jinja2模板roles角色管理
  • 队列+宽搜_429. N 叉树的层序遍历_二叉树最大宽度
  • Windows11安装及使用nvm
  • (一)机器学习 - 入门
  • 【解决】k8s使用kubeadm初始化集群失败问题整理
  • apache-dubbo
  • ECharts柱状图-柱图2,附视频讲解与代码下载
  • 【新人系列】Python 入门(十六):正则表达式
  • HTML综合
  • 孚盟云 MailAjax.ashx SQL注入漏洞复现
  • 解决“VMware虚拟机报Intel VT-x”错误
  • NiceGUI `ui.table` 基础
  • 分布式 Raft算法 总结
  • C++ 中面向对象编程如何实现动态绑定?
  • 微服务-01
  • 这是一个vue3 + scss的数字滚动效果
  • 数字证书管理工具 openssl keytool
  • Polars数据聚合与旋转实战教程
  • 引用类型集合的深拷贝,无需手动写循环:Apache Commons Lang (SerializationUtils)
  • HTML、CSS表格的斜表头样式设置title 画对角线
  • docker 安装mysql 5.7 详细保姆级教程