图片分割和图片合成(大图切割成小图,python代码)
目录
分割
拼接
由于后面要进行图片的分割,所以就先做了一些准备。
要分割的图片如下:
分割
思路也比较简单,代码注释比较详细,看代码就行。
from cv2 import cv2
import numpy as np
import ospic_path = '.jpg' # 分割的图片的位置
pic_target = './result/' # 分割后的图片保存的文件夹
if not os.path.exists(pic_target): #判断是否存在文件夹如果不存在则创建为文件夹os.makedirs(pic_target)
#要分割后的尺寸
cut_width = 512
cut_length = 512
# 读取要分割的图片,以及其尺寸等数据
picture = cv2.imread(pic_path)
(width, length, depth) = picture.shape
# 预处理生成0矩阵
pic = np.zeros((cut_width, cut_length, depth))
# 计算可以划分的横纵的个数
num_width = int(width / cut_width)
num_length = int(length / cut_length)
# for循环迭代生成
for i in range(0, num_width):for j in range(0, num_length):pic = picture[i*cut_width : (i+1)*cut_width, j*cut_length : (j+1)*cut_length, :] result_path = pic_target + '{}_{}.jpg'.format(i+1, j+1)cv2.imwrite(result_path, pic)print("done!!!")
效果如下:
拼接
有了分割好的图片之后,后面可能还要进行拼接,拼接相对复杂一些。
代码如下:
from cv2 import cv2
import numpy as np
import os
# 分割后的图片的文件夹,以及拼接后要保存的文件夹
pic_path = '/result/'
pic_target = 'picture/'
# 数组保存分割后图片的列数和行数,注意分割后图片的格式为x_x.jpg,x从1开始
num_width_list = []
num_lenght_list = []
# 读取文件夹下所有图片的名称
picture_names = os.listdir(pic_path)
if len(picture_names)==0:print("没有文件")else:# 获取分割后图片的尺寸img_1_1 = cv2.imread(pic_path + '1_1.jpg')(width, length, depth) = img_1_1.shape# 分割名字获得行数和列数,通过数组保存分割后图片的列数和行数for picture_name in picture_names:num_width_list.append(int(picture_name.split("_")[0]))num_lenght_list.append(int((picture_name.split("_")[-1]).split(".")[0]))# 取其中的最大值num_width = max(num_width_list)num_length = max(num_lenght_list)# 预生成拼接后的图片splicing_pic = np.zeros((num_width*width, num_length*length, depth))# 循环复制for i in range(1, num_width+1):for j in range(1, num_length+1):img_part = cv2.imread(pic_path + '{}_{}.jpg'.format(i, j))splicing_pic[width*(i-1) : width*i, length*(j-1) : length*j, :] = img_part# 保存图片,大功告成cv2.imwrite(pic_target + 'result.jpg', splicing_pic)print("done!!!")
拼接后的效果图如下:
注意:分割和代码采用文中的分割代码,拼接才能成功,或者保持相同的命名方式。
图片分割和图片合成(大图切割成小图,python代码)相关推荐
- “切割您的图片:将您的照片切割成四个完美的部分!“
目录 简介: 源代码: 源代码说明: 效果如下所示: 简介: 在midjourney中通过描述生成图片,并将图片保存到文件夹下,然后使用photoshop切割成等大的四份.听起来就很麻烦,以下有一种方 ...
- python大图切成小图
可以使用 Python 库 PIL (Python Imaging Library) 来实现切割大图片为小图片. 示例代码如下: from PIL import Image# 打开大图片 im = I ...
- python之PIL 大图拆分成小图
前言 最近在做一个mmo的游戏,里面的大地图是一张非常巨大的图片,我们要根据玩家所在的位置,动态加载地块,这就需要我们把这张大图拆分成n行m列,本来想着美术就可以拆了,但是因为图片太多,给美术也增加了 ...
- Python小技巧:批量大图压缩成小图
背景 客户提供了上千张30M以上的tif文件,小程序员们不注意将该图片作为网站中展示的图片.结果就是网站加载速度极慢,小朋友们开始分工进行人工裁剪了.作为很久不编程的码老汉必须出马了. 代码 利用免费 ...
- python的隐藏功能分享_【图片】分享一段功能非常简陋的python代码实现下载free种【pt吧】_百度贴吧...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 ##### class Torrents(): ''' Define a torrent ''' def __init__(self,torrent): ...
- 用python实现bt下载_【图片】分享一段功能非常简陋的python代码实现下载free种【pt吧】_百度贴吧...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 ##### class Torrents(): ''' Define a torrent ''' def __init__(self,torrent): ...
- 合并数据 - 合并多个Excel文件并转成CSV - Python代码
在工作中,有时候因为部门间的数据权限问题,推送数据的时候往往是通过邮件完成,对于量大的数据,往往会拆成很多个excel发送,到下一个部门导入数据库之前,总是需要先将所有excel合成一个excel,再 ...
- 用Python分割九宫格图片发朋友圈
近日,朋友圈流行起了发九宫格的图片,就是将一张图片切割成九张图,然后在朋友圈发九张,但看起来就像一张一样,这不,我楼下的小A就狂发了一堆. 看起来好像挺好玩的,于是就问了小A他是怎样做的,他跟我说要下 ...
- java 旋转图片_Java实现图片翻转以及任意角度旋转
最近几天在做一个项目,因为涉及到了图片(绝大部分都不是整图,是把一张张的大图切成小图,也就是Title)的翻转以及90°旋转,弄得焦头烂额.在网上搜索好几天,发现用到的方法都是比较公式化的,对于只是在 ...
最新文章
- 基于希克斯需求价格弹性计算_Serverless弹性伸缩的现状调研(超详细)
- leetcode 113. 路径总和 II
- 不是技术也能看懂容器技术与容器平台
- k8s Dashboard部署Tomcat集群
- Level up - single parent navigation
- 周鸿祎详解360手机战略:赚钱不靠硬件靠服务
- Delphi以GDI+制作桌面歌词效果
- Linux 命令(75)—— uptime 命令
- HTML 5--Grouping and Nesting Styles
- 七日瘦身汤绝妙配方 - 生活至上,美容至尚!
- 数据分析 | 将业务问题转换为统计问题后,我看到了数字的真相
- Unity3D中英文对照手册
- 英雄联盟LOL JAVA版
- RabbitMQ学习笔记:虚拟主机(Virtual Hosts)
- 赛尔号眼球怎么抓_素描头像怎么画?素描入门基础画|自学素描基本入门教程...
- Android5.0之后打开开发者选项中的不保留活动,解决方案
- IP网络主动测评系统
- 简化版的DRCNN代码(Python)
- 分析和讯博客数据访问数和评论数
- 深度学习这么调参训练_深度学习调参技巧