利用python的图像分块与拼接
1.图片分块
- import os
- import matplotlib.pyplot as plt
- import cv2
- import numpy as np
- def divide_img(img_path, img_name, save_path):
- imgg=img_path+img_name
- img = cv2.imread(imgg)
- # img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
- h = img.shape[0]
- w = img.shape[1]
- n=8
- m=8
- print('h={},w={},n={},m={}'.format(h,w,n,m))
- dis_h=int(np.floor(h/n))
- dis_w=int(np.floor(w/m))
- num=0
- for i in range(n):
- for j in range(m):
- num+=1
- print('i,j={}{}'.format(i,j))
- sub=img[dis_h*i:dis_h*(i+1),dis_w*j:dis_w*(j+1),:]
- cv2.imwrite(save_path + '_{}.tif'.format(num),sub)
- if __name__ == '__main__':
- img_path = 'D:\\PycharmDOC\\divide_test_photo\\s1\\'
- save_path = 'D:\\PycharmDOC\\divide_test_photo\\s2\\'
- img_list = os.listdir(img_path)
- for name in img_list:
- divide_img(img_path,name,save_path)
2.图片拼接
- import PIL.Image as Image
- import os
- IMAGES_PATH = 'D:\\PycharmDOC\\divide_test_photo\\s3\\' # 图片集地址
- IMAGES_FORMAT = ['.jpg', '.tif'] # 图片格式
- IMAGE_SIZE = 128 # 每张小图片的大小
- IMAGE_ROW = 8 # 图片间隔,也就是合并成一张图后,一共有几行
- IMAGE_COLUMN = 8 # 图片间隔,也就是合并成一张图后,一共有几列
- IMAGE_SAVE_PATH = 'D:\\PycharmDOC\\divide_test_photo\\pj.tif' # 图片转换后的地址
- # 获取图片集地址下的所有图片名称
- image_names = [name for name in os.listdir(IMAGES_PATH) for item in IMAGES_FORMAT if
- os.path.splitext(name)[1] == item]
- # 简单的对于参数的设定和实际图片集的大小进行数量判断
- if len(image_names) != IMAGE_ROW * IMAGE_COLUMN:
- raise ValueError("合成图片的参数和要求的数量不能匹配!")
- # 定义图像拼接函数
- def image_compose():
- to_image = Image.new('RGB', (IMAGE_COLUMN * IMAGE_SIZE, IMAGE_ROW * IMAGE_SIZE)) #创建一个新图
- # 循环遍历,把每张图片按顺序粘贴到对应位置上
- for y in range(1, IMAGE_ROW + 1):
- for x in range(1, IMAGE_COLUMN + 1):
- from_image = Image.open(IMAGES_PATH + image_names[IMAGE_COLUMN * (y - 1) + x - 1]).resize(
- (IMAGE_SIZE, IMAGE_SIZE),Image.ANTIALIAS)
- to_image.paste(from_image, ((x - 1) * IMAGE_SIZE, (y - 1) * IMAGE_SIZE))
- return to_image.save(IMAGE_SAVE_PATH) # 保存新图
- image_compose() #调用函数
利用python的图像分块与拼接的更多相关文章
- Python PIL 图像缩小、拼接
比较各种不同取样方式的图像缩放效果. [NEAREST, BILINEAR, BICUBIC, LANCZOS, BOX, HAMMING]NEAREST取样方式是效果最差的,PIL.Image.re ...
- 利用Python覆盖图像的某一部分,即改变图形一块区域(Region)的RGBA值
原图如下: 改变过后的图如下: 查阅API写法如下: from PIL import Image from PIL import ImageDraw pilim = Image.open('1.jpg ...
- 利用python进行简单的图像处理:包括打开,显示以及保存图像
利用python进行简单的图像处理:包括打开,显示以及保存图像 利用PIL处理 PIL(python image library) 是python用于图片处理的package.但目前这个package ...
- 如何利用python制作微信好友头像照片墙?
这个不难,主要用到itchat和pillow这2个库,其中itchat用于获取微信好友头像照片,pillow用于拼接头像生成一个照片墙,下面我简单介绍一下实现过程,代码量不多,也很好理解,实验环境wi ...
- 基于SURF特征的图像与视频拼接技术的研究和实现(一)
基于SURF特征的图像与视频拼接技术的研究和实现(一) 一直有计划研究实时图像拼接,但是直到最近拜读西电2013年张亚娟的<基于SURF特征的图像与视频拼接技术的研究和实现>,条 ...
- 利用python进行数据分析之绘图和可视化
matplotlib API入门 使用matplotlib的办法最常用的方式是pylab的ipython,pylab模式还会向ipython引入一大堆模块和函数提供一种更接近与matlab的界面,ma ...
- 利用python进行数据分析之数据规整化
数据分析和建模大部分时间都用在数据准备上,数据的准备过程包括:加载,清理,转换与重塑. 合并数据集 pandas对象中的数据可以通过一些内置方法来进行合并: pandas.merge可根据一个或多个键 ...
- 利用python web框架django实现py-faster-rcnn demo实例
操作系统.编程环境及其他: window7 cpu python2.7 pycharm5.0 django1.8x 说明:本blog是上一篇blog(http://www.cnblogs.co ...
- 利用 Python + Selenium 实现对页面的指定元素截图(可截长图元素)
对WebElement截图 WebDriver.Chrome自带的方法只能对当前窗口截屏,且不能指定特定元素.若是需要截取特定元素或是窗口超过了一屏,就只能另辟蹊径了. WebDriver.Phant ...
随机推荐
- jq无限极树结构
//群组树结构$(function () { var params= { "companyId":cmpId }; var loadUrl="/apiv2/classif ...
- ArcEngine介绍
一.ArcEngine简介ArcEngine被定位为一个嵌入式的产品,它并非面向最终用户,而是一个面向开发者的产品.对于繁冗的GIS开发工作而言,理想的解决方案是一个基于组件的实用的开发框架,且该框架 ...
- mysql数据库查询过程探究和优化建议
查询过程探究 我们先看一下向mysql发送一个查询请求时,mysql做了什么? 如上图所示,查询执行的过程大概可分为6个步骤: 客户端向MySQL服务器发送一条查询请求 服务器首先检查查询缓存,如果命 ...
- Delphi 适合于文本文件的基本操作
- xorm:golang的orm(只写了一小部分)
xorm xorm是一个简单而强大的Go语言ORM库. 通过它可以使数据库操作非常简便.这个库是国人开发的,是基于原版 xorm:https://github.com/go-xorm/xorm 的定制 ...
- zabbix 启到不起来:active check configuration update from [127.0.0.1:10051] started to fail (cannot connect to [[127.0.0.1]:10051]: [111] Connection refused)
cat /var/log/zabbix_agent_log 查看日记出现报错:active check configuration update from [127.0.0.1:10051] star ...
- win7安装xmanager报错error1303、err1317
安装xmanager时出现的一些问题,记录如下. 1.安装xmanager时,提示error1303.如下图,按照百度的办法,创建相应的文件夹后,点击重试. 2.重试后提示err1317,如下图所示. ...
- Druid连接池错误(数据库版本问题)
前提 jdbc驱动: mysql-connector-java.8.0.13.jar durid依赖包:durid-1.0.9.jar mysql版本: mysql 8.0 1 错误 1.1 错误一 ...
- Coding 账户与 本地 Git 客户端的配置
1.先创建cooding账户 ,注册地址:https://coding.net/ 2.创建好账户后登陆,在个人设置中 验证邮箱 和 验证手机 (邮箱很重要配置需要用到) 3.安装git 客户端 (在 ...
- vue 绑定class、v-bind:style(对象语法、数组语法)
绑定 HTML Class 我们可以传给 v-bind:class 一个对象,以动态地切换 class: 内联样式在模板里 <div id="div1" :class=&qu ...