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

【Python】一个简单的小案例:实现将两张图片合并为一张

 使用时保证已经安装了opencv-python

import cv2bg = "BG.jpg"  # 背景图名称
fg = "FG.jpg"  # 前景图名称
output_filename = "new.jpg"  # 合成后图片名称img_bg = cv2.imread(bg)  # 读取背景图
img_fg = cv2.imread(fg)  # 读取前景图# 读取背景图和前景图的像素和通道数
rows_bg, cols_bg, channels_bg = img_bg.shape
rows_fg, cols_fg, channels_fg = img_fg.shape
change_points = (cols_bg, rows_bg)# 修改前景图大小为背景图大小
img_fg = cv2.resize(img_fg, change_points, interpolation=cv2.INTER_LINEAR)roi = img_bg[0:rows_bg, 0:cols_bg]  # 划定ROI区域
img_fg2gray = cv2.cvtColor(img_fg, cv2.COLOR_BGR2GRAY)  # 前景图转为灰度图
ret, mask = cv2.threshold(img_fg2gray, 175, 255, cv2.THRESH_BINARY)  # 设定阈值和掩膜
mask_inv = cv2.bitwise_not(mask)  # 掩膜取反img_bg_bg = cv2.bitwise_and(roi, roi, mask=mask)  # 获背景图扣去空白
img_fg_fg = cv2.bitwise_and(img_fg, img_fg, mask=mask_inv)  # 前景图扣去空白dst = cv2.add(img_bg_bg, img_fg_fg)  # 合成图像cv2.imwrite(output_filename, dst)  # 保存图像

代码功能:

  1. 导入OpenCV库:import cv2

  2. 定义背景图(bg)、前景图(fg)和输出图片的文件名(output_filename)。

  3. 使用OpenCV的cv2.imread函数读取背景图和前景图。

  4. 获取背景图和前景图的尺寸和通道数,保存在rows_bg, cols_bg, channels_bgrows_fg, cols_fg, channels_fg中。

  5. 将前景图的大小调整为背景图的大小,使用cv2.resize函数。

  6. 划定ROI(Region of Interest)区域,即在背景图上选择合成的区域。

  7. 将前景图转为灰度图,使用cv2.cvtColor函数。

  8. 设定阈值和创建掩膜,使用cv2.threshold函数。

  9. 对掩膜取反,得到反向掩膜。

  10. 使用cv2.bitwise_and函数将背景图和前景图按照掩膜进行与运算,分别得到背景图中保留前景部分和前景图中保留背景部分的图像。

  11. 使用cv2.add函数将上述两个部分叠加,得到最终合成的图像。

  12. 使用cv2.imwrite函数将合成后的图像保存到指定文件名的文件中。

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

相关文章:

  • 不同的强化学习模型适配与金融二级市场的功能性建议
  • 【音视频原理】音频编解码原理 ③ ( 音频 比特率 / 码率 | 音频 帧 / 帧长 | 音频 帧 采样排列方式 - 交错模式 和 非交错模式 )
  • spring常用语法
  • 【计算机毕业设计】128电脑配件销售系统
  • 换个思维方式快速上手UML和 plantUML——类图
  • 策略模式+SpringBoot接口,一个接口实现接收的数据自动分流处理
  • P1228 地毯填补问题(葬送的芙蓉王【bushi】)
  • 352. 闇の連鎖(树上差分,LCA)
  • dcat admin + dingo + nginx 开发前台
  • 安卓线性布局LinearLayout
  • Advanced CNN
  • 判断当前设备是不是安卓或者IOS?
  • 使用C++操作Matlab中的mat文件
  • 【OCPP】ocpp1.6协议第3.5章节:本地授权和离线行为-介绍及翻译
  • OpenGL查询对象 Query Objects
  • 【数据分享】1929-2023年全球站点的逐日最高气温数据(Shp\Excel\免费获取)
  • Docker深入解析:从基础到实践
  • 【鸿蒙】大模型对话应用(一):大模型接口对接与调试
  • SQL的函数类型
  • TSINGSEE青犀视频智慧电梯管理平台,执行精准管理、提升乘梯安全
  • VMware:在部分链上无法执行所调用的函数,请打开父虚拟磁
  • 【数据结构 08】红黑树
  • 【百度Apollo】自动驾驶规划技术:实现安全高效的智能驾驶
  • 《C程序设计》上机实验报告(五)之一维数组二维数组与字符数组
  • 【BUG】联想Y7000电池电量为0且无法充电解决方案汇总
  • centos7常用命令之安装插件2
  • MATLAB - 仿真单摆的周期性摆动
  • Pandas进阶--map映射,分组聚合和透视pivot_table详解
  • Visual Studio 和Clion配置Cocos2d-x环境
  • 【百度Apollo】本地调试仿真:加速自动驾驶系统开发的利器