在用双目相机与其指定的App拍摄时,左右目拍摄照片连在一起,现将其左右分开,好做下一步训练与学习。(本文是本人学习过程中的一次小记录,编程技术很菜,大多有参考,代码可能也不简洁,第二次写CSDN,望轻喷!QAQ)
示例图片:图1
图2
效果: left:图1左 图2左
right:图1右 图2右
(好像都差不多,选的图片看起来不那么明显,hhh。 -_-!!! )
代码:import glob
import cv2
import numpy as np
save_left = "./images/left/"
save_right = "./images/right/"
read_shape = []
img_name = []
images = glob.glob('./*.png')
# print(images) 查看glob读取的时候用
for i in range(len(images)):
read_shape.append(cv2.imread(images[i]))
img_name.append(images[i].split('\')[1].split('.')[0]) # 这里可能需要修改
x, y = np.int32((read_shape[i].shape[0] * 0.5, read_shape[i].shape[1] * 0.5))
cropped_left = read_shape[i][:, 0:y]
cropped_right = read_shape[i][:, y:]
img_left = cv2.imwrite(save_left + img_name[i] + '.png', cropped_left)
img_right = cv2.imwrite(save_right + img_name[i] + '.png', cropped_right)
使用方法:
1).在自己的数据图片目录下创建一个.py文件,复制代码进去。
2).然后再在当前目录创建images文件夹,再在这个文件夹下分别创建left和right两个文件夹。
3).运行。
注意的地方:此行代码:
img_name.append(images[i].split('\')[1].split('.')[0])
因为我的电脑用glob读取的时候是'.\1.png',有的电脑读取会显示的'./1.png'。这里先把for循环的内容注释或者删除,print一下,查看一下自己电脑glob读取的格式,再改成"\"或"/"。
迷迷糊糊的缺点:因为我这里从中间分开,数据转换成了int型,有些图片像素宽除2后会变成0.5,所以会有点缺失,咳咳咳,这个纯属萌新解读,(手动狗头),在线求大神修改~
自己想到的蜜汁解法:
可以考虑将所有图片先reshape成整除的,这样就好啦~(大神可以直接改代码~)



