IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 使用python实现将扣好的图重叠到背景图片上 -> 正文阅读

[Python知识库]使用python实现将扣好的图重叠到背景图片上

之前把两张图片重叠起来做成头像,但是没有买PS软件,用windows自带的画图软件处理无背景图片会bug,网上找到的代码又不能达到我想要的效果,就自己写了一个

希望把这两张图片重叠起来:
背景图片
在这里插入图片描述

我的代码如下:

import cv2
import numpy as np

def img_overlap(back,front,x_bais,y_bais,zoom):
    back = np.array(back)
    taget_shape = (int(back.shape[1]*zoom),int(back.shape[0]*zoom))
    front = cv2.resize(front,taget_shape)
    front = np.array(front)
    front = front[int((front.shape[0]-back.shape[0])/2):int((front.shape[0]-back.shape[0])/2+back.shape[0]),
            int((front.shape[1]-back.shape[1])/2):int((front.shape[1]-back.shape[1])/2+back.shape[1]),:]
    front2 = np.array(front)
    for a in range(front2.shape[0]):
        for b in range(front2.shape[1]):
            for c in range(front2.shape[2]):
                if front2[a][b][c] == 0:
                    front2[a][b][c] = 1
                else:
                    front2[a][b][c] = 0
	back[max(0,y_bais):min(back.shape[0],back.shape[0]+y_bais),max(0,x_bais):min(back.shape[1],back.shape[1]+x_bais),:] *= front2[max(0,-y_bais):min(back.shape[0],back.shape[0]-y_bais),
                                                         max(0,-x_bais):min(back.shape[1],back.shape[1]-x_bais),:]
    back[max(0,y_bais):min(back.shape[0],back.shape[0]+y_bais),max(0,x_bais):min(back.shape[1],back.shape[1]+x_bais),:] += front[max(0,-y_bais):min(back.shape[0],back.shape[0]-y_bais),
                                                           max(0,-x_bais) : min(back.shape[1],back.shape[1]-x_bais), :]
    return back


if __name__ == '__main__':
    back = cv2.imread('lgd.png')   #背景图片
    front = cv2.imread('tx.png')    #重叠图片
    x_bais = 0   #横向偏移量
    y_bais = 0  #纵向偏移量
    zoom = 1    #front图片放大倍数,需大于1
    result = img_overlap(back, front, x_bais, y_bais, zoom)
    cv2.imshow('result',result)
    cv2.waitKey(0)
    cv2.imwrite('result.png',result)    #保存图片

可以设置重叠图片在横向、纵向的偏移量已经重叠图片的放大倍数(此处只能放,没有写缩小,需要缩小可以手动在画图里拉大画布),此处我的背景图片和重叠图片的尺寸分别是300x300和1080x1080,设置初始参数得到的图片如下
在这里插入图片描述
为了达到目标效果,将y_bias设置为38,zoom设置为1.13即可得到目标图像
在这里插入图片描述

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-10-16 19:36:13  更:2021-10-16 19:38:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 21:10:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码