最近用到openmv的图像匹配,必须使用pmg格式。网上有一些自动转换的网站,但是都有各种限制,比较麻烦,然后就自己用python来实现吧
注意pmg必须是灰度图
import os,random
import cv2
'''
源文件夹格式:
/pic
/class1
...jpg
...jpg
......
/class2
...jpg
...jpg
......
/class3
...jpg
...jpg
......
........'''
org = '/media/rorschach/新加卷/template_pipei/car_ds_split/train'#父目录
target = '/media/rorschach/新加卷/template_pipei/template/'#目标路径
class_names = os.listdir(org)#所有类名
second_dirs=[]#待转换类别的所有路径:/。。。/classname【n】
pgm_paths = []
for _ in class_names:
second_dirs.append(org + '/' + _)
pgm_paths.append(target+_+'_'+'pgm')#数据存储路径 命名可以自己修改
#两个路径的类名顺序是一致的
#print(second_dir)#所有图片的上一级路径
for k in range(len(pgm_paths)):
pgm_path = pgm_paths[k]
if not os.path.exists(pgm_path):
os.mkdir(pgm_path)
filenames = os.listdir(second_dirs[k])#单一类图片的路径下所有图片的名字
filenames = random.sample(filenames,5)#随机抽取数量
print(filenames)
i = 1
for filename in filenames:
ioread = os.path.join(second_dirs[k], filename)
print(ioread)
grayImage = cv2.imread(ioread, cv2.IMREAD_GRAYSCALE)
iowrite = pgm_path + '/%d.pgm' % i
print(iowrite)
i += 1
cv2.imwrite(iowrite, grayImage)
这里我是每类图片抽取了5张作为模板,效果如下