python – 为图像添加填充以使它们成为相同的形状
我有一组不同大小的图像(45,50,3),(69,34,(34,98,3).我想为这些图像添加填充,如下所示:
取整个图像的最大宽度和长度,然后将图像放入该尺寸 import os import glob import cv2 input_path="/home/images" os.chdir(indput_path) images=glob.glob("*.png") Length=[] Width=[] for img in images: img=cv2.imread(img) width,length=img.shape[0:2] Length.append(length) Width.append(width) W=max(Width) L=max(Length) 如何在opencv中添加填充,以便所有图像都具有相同的大小?在示例中l给出的图像将得到(69,3)的形状 EDIT1: 假设我有一个形状(49,39,3)想要转换为(80,60,3)的图像: 所以top = height / 2 = 19.5 bottom = height / 2 = 19.5 左=宽度/ 2 = 24.5 右=宽度/ 2 = 24.5 output_image维度:{width = 80,height = 60} 顶= 30 底= 30 左= 40 右= 40 import cv2 import numpy as np from matplotlib import pyplot as plt BLUE = [255,255,255] img1 = cv2.imread('/image.png') constant=cv2.copyMakeBorder(img1,30,40,cv2.BORDER_CONSTANT,value=BLUE) plt.subplot(231),plt.imshow(img1,'gray'),plt.title('ORIGINAL') plt.subplot(233),plt.imshow(constant,plt.title('CONSTANT') plt.show() print(constant.shape) (109,119,3) 但它应该是(80,3) EDIT2: 有效 constant= cv2.copyMakeBorder(img1,15,16,10,11,value=BLUE) 解决方法
您可以使用:
image = cv2.copyMakeBorder( src,top,bottom,left,right,borderType) 其中src是你的源图像,botto,right是图像周围的填充. 您可以使用max(sizes) – while循环中图像的大小值来为每个图像添加填充. > cv2.BORDER_CONSTANT copyMakeBorder tutorial (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- python – 用pandas read_csv读取丢失日期的最安全的方法 –
- python将巨型函数转换为Class
- python – Pandas:查询字符串,其中列名包含特殊字符
- python – 将Waf目标链接到由外部构建系统(CMake)生成的库
- python – Pandas – 创建类似于pd.get_dummies的多个列
- Pandas Dataframes将列名称与列值合并
- 详解Python中contextlib上下文管理模块的用法
- Python实现PS滤镜Fish lens图像扭曲效果示例
- 在Python中一行中不超过80个字符意味着什么?
- python中的内置函数max()和min()及mas()函数的高级用法