python 实现将小图片放到另一个较大的白色或黑色背景图片中

yipeiwu_com5年前Python基础

将图片放入到白色或黑色背景图中,前提是图片小于背景图片的尺寸,原图为如下,长为192,宽为64。

1.将图片放入到白色背景图(224,224)中

import cv2
import numpy as np

def img_resize_to_target_white(image):
 target = np.ones((224,224),dtype=np.uint8)*255

 ret = cv2.cvtColor(target, cv2.COLOR_GRAY2BGR)

 h = image.shape[0]
 w = image.shape[1]
 for i in range(224):
  for j in range(224):
   if(i < h) and (j < w):

    ret[i, j, 0] = image[i, j, 0]
    ret[i, j, 1] = image[i, j, 1]
    ret[i, j, 2] = image[i, j, 2]
   else:
    ret[i, j, 0] = 255
    ret[i, j, 1] = 255
    ret[i, j, 2] = 255

 return ret
 
if __name__ == '__main__':
 image = cv2.imread('/home/yasin/桌面/test.png')
 img_new_white = img_resize_to_target_white(image)
 cv2.imshow("img_new_white", img_new_white)
 cv2.waitKey() 

运行结果为:

2.将图片放入到黑色背景图(224,224)中

import cv2

def img_resize_to_target_black(image):
 target = np.zeros((224,224),dtype=np.uint8)

 bgr_img = cv2.cvtColor(target, cv2.COLOR_GRAY2BGR)

 h = image.shape[0]
 w = image.shape[1]
 for i in range(h):
  for j in range(w):

   bgr_img[i, j, 0] = image[i, j, 0]
   bgr_img[i, j, 1] = image[i, j, 1]
   bgr_img[i, j, 2] = image[i, j, 2]

 return bgr_img

if __name__ == '__main__':
 image = cv2.imread('/home/yasin/桌面/test.png')
 img_new_black = img_resize_to_target_black(image)
 cv2.imshow("img_new_black", img_new_black)
 cv2.waitKey()

运行结果为:

以上这篇python 实现将小图片放到另一个较大的白色或黑色背景图片中就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

详解Python发送email的三种方式

详解Python发送email的三种方式

Python发送email的三种方式,分别为使用登录邮件服务器、使用smtp服务、调用sendmail命令来发送三种方法 Python发送email比较简单,可以通过登录邮件服务来发送...

python实现决策树分类(2)

在上一篇文章中,我们已经构建了决策树,接下来可以使用它用于实际的数据分类。在执行数据分类时,需要决策时以及标签向量。程序比较测试数据和决策树上的数值,递归执行直到进入叶子节点。 这篇文章...

详解Python列表赋值复制深拷贝及5种浅拷贝

概述 在列表复制这个问题,看似简单的复制却有着许多的学问,尤其是对新手来说,理所当然的事情却并不如意,比如列表的赋值、复制、浅拷贝、深拷贝等绕口的名词到底有什么区别和作用呢? 列表赋值...

Python操作excel的方法总结(xlrd、xlwt、openpyxl)

前言 在处理excel数据时发现了xlwt的局限性–不能写入超过65535行、256列的数据(因为它只支持Excel 2003及之前的版本,在这些版本的Excel中行数和列数有此限制),...

使用IPython来操作Docker容器的入门指引

现在Docker是地球上最炙手可热的项目之一,就意味着人民实际上不仅仅是因为这个才喜欢它。 话虽如此,我非常喜欢使用容器,服务发现以及所有被创造出的新趣的点子和领域来切换工作作为范例。...