简单的图片换背景

本篇博客实现把卡片随机旋转一下

import cv2
from imutils import paths
import imutils
import random
import os



def merge_image(back_path, card_path, new_path):
    back_paths = sorted(list(paths.list_images(back_path)))
    card_paths = sorted(list(paths.list_images(card_path)))

    for i in range(len(card_paths)) :
        a = int(random.random() * len(card_paths))
        image_card = cv2.imread(card_paths[a])
        
        if image_card is None:
            a += 1
            print(file_name)
        angle = int(random.random() * 10 - 5)
        image_card = imutils.rotate_bound(image_card, angle=angle)
        image_height, image_width = image_card.shape[:2]
        image_back = cv2.imread(back_paths[int(random.random() * len(back_paths))])
        image_back = cv2.resize(image_back, (int(image_width *(1 + 1 * random.random())), int( image_height * (1.5 + 1 * random.random())  )))
        image_back_height, image_back_width = image_back.shape[:2]
        x = random.uniform(0.1, 0.9) * (image_back_width - image_width)
        y = random.uniform(0.1, 0.9) * (image_back_height - image_height)
        left = int(x)
        right = int(x) + image_width
        top = int(y)
        bottom = int(y) + image_height

        mask = image_card > 0
        image_card_temp = image_back[top:bottom, left:right]
        image_card_temp[mask] = image_card[mask]

        image_back[top:bottom, left:right] = image_card_temp
        file_name = "{}.jpg".format(i)
        file_name = os.path.sep.join([new_path, file_name])
        cv2.imwrite(file_name, image_back)

if __name__ == "__main__":
	merge_image(r'G:\back', r'G:\card',
	            r'G:\new')

上面代码实现的功能是: 把一张小卡卡,以随机角度/随机位置融合到背景图上.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值