一、图片裁剪
全景图进行展示通常需要进行裁剪,一张全景图要裁剪成32张(4行*8列)

二、使用步骤
1.引入库
import glob
import math, shutil
import os.path
import cv2
from PILimport Image
2.读入数据
代码如下(示例):
order = 0
for pa_pic in glob.glob("panorama/*.jpg"):
cut_panorama(pa_pic, order)
order += 1
order是作为序号便于后面命名
3.执行裁剪
def cut_panorama(name, order):
img = cv2.imread(name)
print(type(img.shape))
// 将该图片分成4行8列
x_cut = img.shape[0] / 4 # *0.72
y_cut = img.shape[1] / 8
# 输出当前像素
print(x_cut)
print(y_cut)
n = 0
path = './pythonProject/output/'
for i in range(4):
for j in range(8):
xs = int(i * x_cut)
xe = int((i + 1) * x_cut)
ys = int(j * y_cut)
ye = int((j + 1) * y_cut)
cropped = img[xs:xe, ys:ye] # 裁剪坐标为[y0:y1, x0:x1]
print('n转换前:', n)
// 前方高能,序号转换
if 0 <= n % 8 < 4:
m = n + 4
else:
m = n - 4
print('n转换后:', m)
// 如果序号不到10,要补足两位
num = '0' if m < 10 else ''
mt = math.pow(10, 5 - len(str(order)))
begin_num = str(int(mt))[1:]
filename = begin_num + str(order) + '-pano-tex-r0-' + num + str(m) + '.jpg'
print('fileName:', filename)
cv2.imwrite(os.path.join(path, filename), cropped)
n += 1
print(f'Hi, finished') # Press Ctrl+F8 to toggle the breakpoint.
// 更改当前文件夹内所有jpg的分辨率
def convertjpg(jpgfile, k):
img = Image.open(jpgfile)
resolution = int(math.pow(2, k + 7)) // 当前分辨率
new_img = img.resize((resolution, resolution), Image.ANTIALIAS)
new_img.save(os.path.join("output/r" + str(k), os.path.basename(jpgfile)))
// 图片重命名
sonFolder = jpgfile.split('\\')
newOrder = int(sonFolder[1].split('-')[0]) // 100
dstFileFront = sonFolder[0] + '\\r' + str(k) + '\\'
newFolder(dstFileFront + str(newOrder))
dstFileMiddle = str(newOrder) + '\\' + sonFolder[1].split('r')[0] + 'r' + str(k) + '-'
dstFileBack = jpgfile.split('-')[4]
os.rename(sonFolder[0] + '\\r' + str(k) + '\\' + sonFolder[1], dstFileFront + dstFileMiddle + dstFileBack)
def newFolder(filepath):
folder = os.path.exists(filepath)
if not folder:
os.makedirs(filepath)
print(filepath, " has been created!")
总结
由于图片裁剪后通常还要进行分辨率设置,后面的convertJpg为图片分辨率重新调整
&spm=1001.2101.3001.5002&articleId=124095203&d=1&t=3&u=e738c1ef097841bcba62b9726d3a1529)
435

被折叠的 条评论
为什么被折叠?



