行人reid ,多个开源地址数据变成 market1501格式合并,附代码,数据地址

数据下载,百度云链接
https://blog.csdn.net/qq_28266311/article/details/87809825
数据很全的介绍
https://github.com/NEU-Gou/awesome-reid-dataset#thermalworld

行人reid 数据集相关的问题,以及对应连接
1、Maret1501, 每个文件结构的含义
行人reid 数据集合介绍
https://www.pianshen.com/article/2994797935/

–market1501文件结构
"bounding_box_train" – 751个ID,12936张图片,训练集;
"bounding_box_test" – 750个ID,19732张图片,测试集,也是所谓的gallery参考图像集;
"query" – 750个ID,共3368张图片,即待查询图片。test中750个ID在每个摄像头中随机选择一张图像作为query,因此一个ID的query最多有 6 个,ps:与test中的图不重复,在参考建立自己的数据集时,可以先建好test,然后按需要从test中剪切得到query;
"gt_query" – bla bla…个人感觉没什么用
"gt_bbox" – bla bla…个人感觉没什么用
Test 和 query 是同样Id同样数量的人,不重复的图片,

测试用到上面两个数据集,得到map 和rank1。 两个分别就是 gallery, query 底库和匹配图片,都是一个人多张图片,两个测试集不重叠。
Query 待查询的图片,多于底库的图片,遍历query 图片和底库所有图片比对,用 id比较
数据有脏数据,先不管

2、CUHK-03数据集部分问题,测试协议第二种,是类似于market1501
https://blog.csdn.net/hyk_1996/article/details/79387053
https://github.com/zhunzhong07/person-re-ranking/tree/master/CUHK03-NP(数据处理)
在这里插入图片描述
在这里插入图片描述3、常用数据集列表,id 数量
https://github.com/NEU-Gou/awesome-reid-dataset

在这里插入图片描述

在这里插入图片描述4、MSMT17 v1 v2 区别
MSMT17_V1 .V2和V1的区别在于是否把人脸抹除。v2 没有人脸的行人,数据集下载链接已经删除
You may contact with Prof. Shiliang Zhang https://www.pkuvmc.com/

5、合并数据成market1501 格式,

链接代码,https://blog.csdn.net/songwsx/article/details/102987787

1、Market1501, 29419 张图片, ID从0001到1501一共1501 个不同ID的行人
2、CUHK03一共有 14097 张图片, ID从001502到002968一共1467个不同ID的行人
现id 是, 从0001-1501, 001502-002968, 2968个id
3、PKU-Reid ,114个id, 2969_02_6.jpg原始标签从001-114, 现在合并后 id 从 002969-003082, 是3082个id
4、每个 id 一对图片,的数据集VIPeR ,632 id,(label,从000-873,不连续)也可以用,虽然少了一点,保存的名字有 viper
Pid+3082+1 , 从 3083 开始。 它的id 不连续,但是只要不重复就可以,结束是 3082+873=3955 ,下一个数据label,需要从 3956 开始,
3083~3955
3714个id (现在label中间有不连续的了,但是不重复)
视频连续帧行人
6、iLIDS-VID数据集涉及在公共开放空间中的两个不相交的摄像机视图中观察到的300个不同的行人。包含两个版本:基于静态图像(参见名为“ILIDS-VID \ images”的文件夹)和基于图像序列(参见名为“ILIDS-VID \ sequences”的文件夹)。
取自监控航空接站大厅,从2个不相交摄像机创建该数据集。随机为300个人采样了600个视频,每人有来自两个视觉的一对视频。每个视频有23~192帧,平均73帧。相似的衣服、光照和视觉改变,复杂的背景和严重的遮挡,很具挑战性。 保存的名字有iLIDSvivid
选择了10497张图片,每个id,30张图片左右,

遮挡很严重, id 从 001 开始不连续到319, 合并后的label , 1~319 +3956
Id =>3957~4275,
3714 +300 = 4014个id (现在label中间有不连续的了,但是不重复)

7、iLIDS,数据集合,数据集i_LIDS_Pedestrian采样了119个人479张图像。size:128*64。每个人平均有4个张图像。有大的照明 改变和遮挡。 保存的名字有_iLIDS_
从0001到0119,一共119id, (连续的), 0001 ~0119 +4276=> 4277~4395
Id 4277~4395
4014 +119 = 4133个id (现在label中间有不连续的了,但是不重复)

四和五是行人跟踪数据集,数据很多姿态重复,每个人都有几十几百张图片,处理过后单独放在一个文件夹,或者合并到market1501 train ,都可以
四、lpw_pep_256x128, 2731个id, ,三个不同的场景,同时多个相机捕捉行人
在这里插入图片描述
在这里插入图片描述

每个场景下的最多的id 出现的数据,加一起 756 + 1751 + 224 =2731个id
跟踪的图片,三个场景的数据依次处理,第一个场景3个文件夹,第二个场景4个文件夹(4台相机),第3个场景4个文件夹
每个场景下,不同文件夹,下的 文件id 表示一个人, 保存到一个文件,然后间隔采样,不少于10张(自己决定)
场景1,id不连续 最小最大 1~1342 +4096 =5438
场景2,id不连续 最小最大 1~2970 +5439 =8409
场景3,id不连续 最小最大 1~272 +8410 =8682
三个场景数据,人 id认为不重复, 756 + 1751 + 224 =2731个id
592438张图片,间隔选取后,179378张图片。
Id 从 4097 ~ 5438
Id 从 5440 ~ 8409
Id 从 8411 ~ 8682
4133+2731 = 6864个id (现在label中间有不连续的了,但是不重复)

五、RPIfied ,112 个id(数据好多), id,数据也很多,间隔抽取固定数量
在这里插入图片描述

此文件夹有12个子文件夹(Cam_1到Cam_12),用于12个相机视图。
在每个文件夹“Cam_*”中,我们在不同的子文件夹中包含每个标识在不同时间的图像序列,名称作为标识的标签。标签1-112表示已知的参与者
标签1-112表示已知的参与者,标签#>=10000对应于行人(干扰者)。
请注意,我们分别处理每个参与者在不同时间的外观,例如,子文件夹“2_1”包含人员2的第一次重新出现(图像序列),子文件夹“3_2”包含人员3的第二次重新出现。

1~112,+8683,

Id 从 8684~8796
6864+112=6976个id (现在label中间有不连续的了,但是不重复)

四五两个跟踪的数据放在一起,有192264张图片 id 4097-8786,一共 2843个id,平均每个人70-100张图片数量较多
之前 id, 1-4095 4133个id, 57578张图,平均每人10张左右图片。VIPeR 632 id只有两张图片
目前有6976 id,数据有多有少,一共249842张图片

6、 代码

代码参考网址
行人重识别数据集转换–统一为market1501数据集进行多数据集联合训练
https://blog.csdn.net/songwsx/article/details/102987787

#coding=utf-8
import glob
import re
import os.path as osp
import os
import shutil

import re
import os
import shutil


# https://github.com/NEU-Gou/awesome-reid-dataset    数据集对应名字,这里找
# https://blog.csdn.net/qq_28266311/article/details/87809825  部分这里找
'''
所有图片的label,不重复就可以,因为训练数据转换的时候,
用set(), add 没有重复的添加所有图片label
然后 利用 {pid : label for label , pid in enumerate(set集合添加的元素变量)},label 是所有不重复图片的,索引0开始

'''

def extract_market(src_path, dst_dir):
    img_names = os.listdir(src_path)
    pattern = re.compile(r'([-\d]+)_c(\d)')
    pid_container = set()
    for img_name in img_names:
        if '.jpg' not in img_name:
            continue
        print(img_name)
        # pid: 每个人的标签编号 1
        # _  : 摄像头号 2
        pid, _ = map(int, pattern.search(img_name).groups())
        # 去掉没用的图片
        if pid == 0 or pid == -1:
            continue
        shutil.copy(os.path.join(src_path, img_name), os.path.join(dst_dir, img_name))
 
# if __name__ == '__main__':
#     src_train_path = r'D:\data\market1501\bounding_box_train'
#     src_query_path = r'D:\data\market1501\query'
#     src_test_path = r'D:\data\market1501\bounding_box_test'
#     # 将整个market1501数据集作为训练集
#     dst_dir = r'E:\reID\market1501\bounding_box_train'
 
#     extract_market(src_train_path, dst_dir)
#     extract_market(src_query_path, dst_dir)
#     extract_market(src_test_path, dst_dir)
 

def extract_cuhk03(src_path, dst_dir):
    img_names = os.listdir(src_path)
    pattern = re.compile(r'([-\d]+)_c(\d)_([\d]+)')  #002563_c1_CUHK10324.jpg  \d匹配数字,groups('0480', '1', '4675')
    pid_container = set()
    print(pattern)
    for img_name in img_names:
        if '.png' not in img_name and '.jpg' not in img_name:
            continue
        print(img_name)
        # pid: 每个人的标签编号 1
        # camid  : 摄像头号 2
        pid, camid, fname = map(int, pattern.search(img_name).groups())

        # 这里注意需要加上前面的market1501数据集的最后一个ID 1501
        # 在前面数据集的最后那个ID基础上继续往后排
        pid += 1501
        dst_img_name = str(pid).zfill(6) + '_c' + str(camid) + '_CUHK' + str(fname) + '.jpg'
        print(dst_img_name)
        shutil.copy(os.path.join(src_path, img_name), os.path.join(dst_dir, dst_img_name))
# if __name__ == '__main__':
#     src_train_path = '/home/shiyy/nas/all_workspace/ReID/data/cuhk03-np/detected/bounding_box_train'
#     src_query_path = '/home/shiyy/nas/all_workspace/ReID/data/cuhk03-np/detected/query'
#     src_test_path = '/home/shiyy/nas/all_workspace/ReID/data/cuhk03-np/detected/bounding_box_test'
#     dst_dir = '/home/shiyy/nas/all_workspace/ReID/data/market1501/bounding_box_train'
 
#     extract_cuhk03(src_train_path, dst_dir)  #cuhk03都拿去训练,所以都放到训练集中
#     extract_cuhk03(src_query_path, dst_dir)
#     extract_cuhk03(src_test_path, dst_dir)

def PKU_Reid(src_path, dst_dir):
    img_names = os.listdir(src_path)
    pid_container = set()
    for img_name in img_names:
        if '.jpg' not in img_name and '.png' not in img_name:
            continue
        print(img_name)
        # pid: 每个人的标签编号 1
        # _  : 摄像头号 2
        pid,camid,name= (img_name).split("_")
        pid=int(pid)
        print((img_name).split("_"))
        pid += 2968  # label 是连续的  001到114,114 个id
        dst_img_name = str(pid).zfill(6) + '_' + str(camid) + '_' + name.split(".")[0] +".jpg" #原始jpg 

        shutil.copy(os.path.join(src_path, img_name), os.path.join(dst_dir, dst_img_name))
 
# if __name__ == '__main__':
#     src_query_path = '/home/shiyy/nas/all_workspace/ReID/data/PKUv1a_128x48'
#     dst_dir = '/home/shiyy/nas/all_workspace/ReID/data/market1501/bounding_box_train'
#     extract_market(src_query_path, dst_dir)

def GRID():#underground_reid  下载的数据集名字,每个标识都有两个来自不同视图的图像,是一对图片,也就是 一个id 只有两张图片,有点少,先不处理
     pass


'''
Pid+3082 , 从 3083 开始。  它的id 不连续,但是只要不重复就可以,
结束是 3082+873=3955   ,下一个数据label,需要从 3956 开始,

'''
def extract_viper(src_path, dst_dir, camid=1):
    img_names = os.listdir(src_path)  
    pattern = re.compile(r'([\d]+)_([\d]+)')  #873_180.bmp
    pid_container = set()
    for img_name in img_names:
        if '.bmp' not in img_name:
            continue
        print(img_name)
        pid, fname = map(int, pattern.search(img_name).groups())
        # 这里注意需要加上前面的数据集的最后一个ID 7069
        # 由于viper数据集ID是从0开始,因此需要+1
        pid += 3082 + 1  #上次合并已经到了3082,这里从3083开始  #003083_c2_viper90.jpg   ,填补名字和market1501图片名字格式一致
        dst_img_name = str(pid).zfill(6) + '_c' + str(camid) + '_viper' + str(fname) + '.jpg'
        shutil.copy(os.path.join(src_path, img_name), os.path.join(dst_dir, dst_img_name))
# src_cam_a = "/home/shiyy/nas/all_workspace/ReID/data/all_data_and_zip/VIPeR/cam_a"
# src_cam_b = '/home/shiyy/nas/all_workspace/ReID/data/all_data_and_zip/VIPeR/cam_b'
# dst_dir ="/home/shiyy/nas/all_workspace/ReID/data/merge_market1501/bounding_box_train"

# extract_viper(src_cam_a, dst_dir, camid=1)
# extract_viper(src_cam_b, dst_dir, camid=2)

'''
iLIDS-VID数据集涉及在公共开放空间中的两个不相交的摄像机视图中观察到的300个不同的行人。包含两个版本:基于静态图像(参见名为“ILIDS-VID \ images”的文件夹)和基于图像序列(参见名为“ILIDS-VID \ sequences”的文件夹)。
取自监控航空接站大厅,从2个不相交摄像机创建该数据集。随机为300个人采样了600个视频,每人有来自两个视觉的一对视频。每个视频有23~192帧,平均73帧。相似的衣服、光照和视觉改变,复杂的背景和严重的遮挡,很具挑战性。 
遮挡很严重,  id 从 001 开始,不连续到319
————————————————
原文链接:https://blog.csdn.net/qq_28266311/article/details/87809825
'''
def iLIDS_vivid(src_path,dst_dir):
    print(src_path)
    for file in os.listdir(src_path):  
        img_names = os.listdir(src_path+"/"+file)    ##数字和数字之间的连接是 cam1 _person062   _person  两个数字的连接字符
        pattern = re.compile(r'([\d]+)_person([\d]+)_([\d]+)')  #cam1_person062_10459.png,不能跳过字母,正则搜索需要加上要搜索前的字母"_person"
        ## 一个  \d+  只能搜索到cam1 的1,  两个 ([\d]+)_([\d]+) 下划线是字符串中的下划线,  返回 的是062,10459,字符串是, 数字_数字
        ## ([\d]+)_([\d]+)_([\d]+)不对  意思是第一个数字,下划线连接第2个多个数字,错误,应该加上  _person,表示这个字符串后面的多个数字062,
        ##再接 下划线,连接的多个数字
        num = len(img_names)
        for index,img_name in enumerate(img_names):
            if num>15:  #大于10张抽取15张左右,自己改动
                interval = (num//15) #多少个数据都抽取10个数据,30//10=3,间隔3张抽取数据,得到10张数据
                if index % interval==0 or index==0: # 例如 0 1 2 3 4 5 6 ,间隔2,就是取2 4 6,同时取得第一个元素0
                    if '.png' not in img_name and '.jpg' not in img_name:
                        continue
                    print("********num",num)
                    # print(pattern.search(img_name).groups())  #('1', '062', '10464')
                    camid, pid,fname = map(int, pattern.search(img_name).groups()) # (1, 62, 10464)
                    pid += 3956  #300个id, id 从 001开始不连续到319,都加3956,最后是3956+319=4275,不重复id, #003083_c2_viper90.jpg   ,填补名字和market1501图片名字格式一致
                    dst_img_name = str(pid).zfill(6) + '_c' + str(camid) + '_iLIDSvivid_' + str(fname) + '.jpg' 
                    print(img_name,dst_img_name)      
                    shutil.copy(os.path.join(src_path+"/"+file, img_name), os.path.join(dst_dir, dst_img_name))   
            else:  # 少于10 张都保留
                if '.png' not in img_name and '.jpg' not in img_name:
                    continue
                
                # print(pattern.search(img_name).groups())  #('1', '062', '10464')
                camid, pid,fname = map(int, pattern.search(img_name).groups()) # (1, 62, 10464)
                pid += 3956  # id 从 001开始不连续到319,都加3956,最后是3956+319=4275,不重复id, #003083_c2_viper90.jpg   ,填补名字和market1501图片名字格式一致
                dst_img_name = str(pid).zfill(6) + '_c' + str(camid) + '_iLIDSvivid_' + str(fname) + '.jpg'     
                print(img_name,dst_img_name)           
                shutil.copy(os.path.join(src_path+"/"+file, img_name), os.path.join(dst_dir, dst_img_name))

# src_path = "/home/shiyy/nas/all_workspace/ReID/data/all_data_and_zip/i-LIDS-VID/sequences/cam1"
# # dst_dir ="/home/shiyy/nas/all_workspace/ReID/data/merge_market1501/bounding_box_train"
# dst_dir ="/home/shiyy/nas/all_workspace/ReID/data/temp"
# iLIDS_vivid(src_path,dst_dir)
# src_path = "/home/shiyy/nas/all_workspace/ReID/data/all_data_and_zip/i-LIDS-VID/sequences/cam2"
# iLIDS_vivid(src_path,dst_dir)


#iLIDS  采样了119个人479张图像。size:128*64。每个人平均有4个张图像。有大的照明 改变和遮挡。 
def i_LIDS_Pedestrian(src_path,dst_dir,camid=1):  #0001001.jpg 前四位是label,
    img_names = os.listdir(src_path)  
    pattern = re.compile(r'([\d]+)') 
    
    for index,img_name in enumerate(img_names): #里面的文件有可能不是图片
        if '.jpg' not in img_name:
            continue
        t= pattern.search(img_name).groups()
        pid,fname =int(t[0][0:4]),t[0][4:]
        # print t,pid,fname
        print(img_name)
        pid += 4276  # 填补名字和market1501图片名字格式一致,0001-0119 id 变成 4277~4395,最后是4395
        dst_img_name = str(pid).zfill(6) + '_c' + str(camid) + '_iLIDS_' + str(fname) + '.jpg' 
        shutil.copy(os.path.join(src_path, img_name), os.path.join(dst_dir, dst_img_name))  
        # print(dst_img_name)       #004338_c1_iLIDS_004.jpg

# src_path = "/home/shiyy/nas/all_workspace/ReID/data/all_data_and_zip/i-LIDS_Pedestrian"
# dst_dir ="/home/shiyy/nas/all_workspace/ReID/data/merge_market1501/bounding_box_train"  
# i_LIDS_Pedestrian(src_path,dst_dir)


'''
跟踪的图片,三个场景的数据依次处理,第一个场景3个文件夹,第二个场景4个文件夹(4台相机),第3个场景4个文件夹
每个场景下,不同文件夹,下的 文件id 表示一个人, 保存到一个文件,然后间隔采样,不少于10张
场景1,id不连续 最小最大 1~1342    +4096 =5438
场景2,id不连续 最小最大 1~2970    +5439 =8409
场景3,id不连续 最小最大 1~272     +8410 =8682
三个场景数据,人 id认为不重复,756 +  1751  + 224 =2731个id 
'''

def lpw(src_path,dst_dir,dataname, no_repeat_start_id,camid=1):  
    count= 0
    # "/home/shiyy/nas/all_workspace/ReID/data/lpw_pep_256x128/pep_256x128/scen1/view3"
    print(src_path)
    for file in os.listdir(src_path):   #子文件夹的名字是 label,同一个场景下的图片 id 一样是一个人
        img_names = os.listdir(src_path+"/"+file)  
        pattern = re.compile(r'([\d]+)')  # 10459.jpg
        num = len(img_names)  #数据长度用于间隔取样,因为是连续帧,很多图片一样,间隔自己决定
        for index,img_name in enumerate(img_names):
            if num>90: 
                interval = (num//30) #多少个数据都抽取10个数据,30//10=3,间隔3张抽取数据,得到10张数据
                if index % interval==0 or index==0: # 例如 0 1 2 3 4 5 6 ,间隔2,就是取2 4 6,同时取得第一个元素0
                    if '.png' not in img_name and '.jpg' not in img_name:
                        continue
                    print("********num",num)
                    # print(pattern.search(img_name).groups())  #('10459')
                    fname = (pattern.search(img_name).groups())[0]
                    pid = int(file)
                    pid += no_repeat_start_id  #不重复id, #003083_c2_viper90.jpg   ,填补名字和market1501图片名字格式一致
                    dst_img_name = str(pid).zfill(6) + '_c' + str(camid) + '_lpw_'+dataname+"_" + str(fname) + '.jpg' 
                    print(img_name,dst_img_name)      
                    shutil.copy(os.path.join(src_path+"/"+file, img_name), os.path.join(dst_dir, dst_img_name))  
                    count+=1               
            elif num>20 :  #大于10张抽取15张左右,自己改动
                interval = (num//15) #interval要>=1,多少个数据都抽取10个数据,30//10=3,间隔3张抽取数据,得到10张数据
                if index % interval==0 or index==0: # 例如 0 1 2 3 4 5 6 ,间隔2,就是取2 4 6,同时取得第一个元素0
                    if '.png' not in img_name and '.jpg' not in img_name:
                        continue
                    print("+++++++++num",num)
                    # print(pattern.search(img_name).groups())  #('10459')
                    fname = (pattern.search(img_name).groups())[0]
                    pid = int(file)
                    pid += no_repeat_start_id  #不重复id, #003083_c2_viper90.jpg   ,填补名字和market1501图片名字格式一致
                    dst_img_name = str(pid).zfill(6) + '_c' + str(camid) + '_lpw_'+dataname+"_" + str(fname) + '.jpg' 
                    print(img_name,dst_img_name)      
                    shutil.copy(os.path.join(src_path+"/"+file, img_name), os.path.join(dst_dir, dst_img_name))  
                    count+=1    
            else:  # 少于10 张都保留
                if '.png' not in img_name and '.jpg' not in img_name:  #这是 not in ,只要有一个在,就是0,读取图片
                    continue
                # print(pattern.search(img_name).groups()) 
                fname = (pattern.search(img_name).groups())[0]
                pid=int(file)
                pid += no_repeat_start_id  # id 从 001开始不连续到319,都加3956,最后是3956+319=4275,不重复id, #003083_c2_viper90.jpg   ,填补名字和market1501图片名字格式一致
                dst_img_name = str(pid).zfill(6) + '_c' + str(camid) + '_lpw_' +dataname+"_" + str(fname) + '.jpg'     
                print(img_name,dst_img_name)           
                shutil.copy(os.path.join(src_path+"/"+file, img_name), os.path.join(dst_dir, dst_img_name))
                count+=1   
            print("img number",count)


# dst_dir ="/home/shiyy/nas/all_workspace/ReID/data/track_person_reid_data"

# scen1 = ["view1","view2","view3"]  #('69400.jpg', 变成'005341_c3_lpw_scen1_69400.jpg')
# for ind,v in enumerate(scen1):
#     src_path = "/home/shiyy/nas/all_workspace/ReID/data/all_data_and_zip/lpw_pep_256x128/pep_256x128/scen1/"+v
#     ##场景1,id不连续 最小最大 1~1342, id + 4096,接上前面合并数据id, 之后最大id  变成1342 +4096= 5438
#     lpw(src_path,dst_dir,dataname="scen1",no_repeat_start_id=4096,camid=ind+1) #9959张图片

# scen2 = ["view1","view2","view3","view4"]
# for ind,v in enumerate(scen2):
#     src_path = "/home/shiyy/nas/all_workspace/ReID/data/all_data_and_zip/lpw_pep_256x128/pep_256x128/scen2/"+v
#     #场景2,id不连续 最小最大 1~2970, id + 5439,接上前面合并数据id, 之后最大id  变成2970 +5439= 8409
#     lpw(src_path,dst_dir,dataname="scen2",no_repeat_start_id=5439,camid=ind+1) 

# scen3 = ["view1","view2","view3","view4"]
# for ind,v in enumerate(scen3):
#     src_path = "/home/shiyy/nas/all_workspace/ReID/data/all_data_and_zip/lpw_pep_256x128/pep_256x128/scen3/"+v
#     #场景3,id不连续 最小最大 1~272   id + 8410,接上前面合并数据id, 之后最大id  变成272 +8410= 8682, ,id 最后填充008682,6位数字
#     lpw(src_path,dst_dir,dataname="scen3",no_repeat_start_id=8410,camid=ind+1) 

'''
标签1-112表示已知的参与者,标签#>=10000对应于行人(干扰者)。
请注意,我们分别处理每个参与者在不同时间的外观,例如,子文件夹“2_1”包含人员2的第一次重新出现(图像序列),
子文件夹“3_2”包含人员3的第二次重新出现。
'''
count= 0
def RPIfied(src_path,dst_dir,count,no_repeat_start_id):  
    # "/home/shiyy/nas/all_workspace/ReID/data/lpw_pep_256x128/pep_256x128/scen1/view3"
    print(src_path)
    for file in os.listdir(src_path):   #子文件夹的名字是 label,同一个场景下的图片 id 一样是一个人
        img_names = os.listdir(src_path+"/"+file) 
        pattern = re.compile(r'([\d]+)f_([\d]+)') # Cam_1f_47451.png  ,是Cam_1   f_47451,数字和数字之间的连接是 f_,+ 是多次匹配
        num = len(img_names)  #数据长度用于间隔取样,因为是连续帧,很多图片一样,间隔自己决定
        lab = file.split("_")[0]
        if int(lab)<=112: #112以下是label,其他的是干扰集合
            for index,img_name in enumerate(img_names):
                if num>10: 
                    interval = (num//10) #多少个数据都抽取10个数据,30//10=3,间隔3张抽取数据,得到10张数据
                    if index % interval==0 or index==0: # 例如 0 1 2 3 4 5 6 ,间隔2,就是取2 4 6,同时取得第一个元素0
                        if '.png' not in img_name and '.jpg' not in img_name:
                            continue
                        # print("********num",num)
                        # print(pattern.search(img_name).groups())  # ('1', '100911')
                        camid,fname = map(int,pattern.search(img_name).groups())           
                        pid = int(lab)
                        pid += no_repeat_start_id  #不重复id, #003083_c2_viper90.jpg   ,填补名字和market1501图片名字格式一致
                        dst_img_name = str(pid).zfill(6) + '_c' + str(camid) + '_RPIfied_' + str(fname) + '.jpg' 
                        print(img_name,dst_img_name)      
                        shutil.copy(os.path.join(src_path+"/"+file, img_name), os.path.join(dst_dir, dst_img_name))  
                        count+=1   
                        print count
        # else:
        #     print("distroctor.............")
        #     print (lab,file )

dst_dir ="/home/shiyy/nas/all_workspace/ReID/data/track_person_reid_data"
src_path = "/home/shiyy/nas/all_workspace/ReID/data/all_data_and_zip/Rpified_v0/RPIfield_v0/Data/Cam_1"
RPIfied(src_path,dst_dir,count, no_repeat_start_id=8683)
src_path = "/home/shiyy/nas/all_workspace/ReID/data/all_data_and_zip/Rpified_v0/RPIfield_v0/Data/Cam_2"
RPIfied(src_path,dst_dir,count, no_repeat_start_id=8683)
src_path = "/home/shiyy/nas/all_workspace/ReID/data/all_data_and_zip/Rpified_v0/RPIfield_v0/Data/Cam_3"
RPIfied(src_path,dst_dir,count, no_repeat_start_id=8683)

src_path = "/home/shiyy/nas/all_workspace/ReID/data/all_data_and_zip/Rpified_v0/RPIfield_v0/Data/Cam_4"
RPIfied(src_path,dst_dir,count, no_repeat_start_id=8683)
src_path = "/home/shiyy/nas/all_workspace/ReID/data/all_data_and_zip/Rpified_v0/RPIfield_v0/Data/Cam_5"
RPIfied(src_path,dst_dir, count,no_repeat_start_id=8683)
src_path = "/home/shiyy/nas/all_workspace/ReID/data/all_data_and_zip/Rpified_v0/RPIfield_v0/Data/Cam_6"
RPIfied(src_path,dst_dir,count, no_repeat_start_id=8683)
src_path = "/home/shiyy/nas/all_workspace/ReID/data/all_data_and_zip/Rpified_v0/RPIfield_v0/Data/Cam_7"
RPIfied(src_path,dst_dir,count, no_repeat_start_id=8683)
src_path = "/home/shiyy/nas/all_workspace/ReID/data/all_data_and_zip/Rpified_v0/RPIfield_v0/Data/Cam_8"
RPIfied(src_path,dst_dir,count, no_repeat_start_id=8683)
src_path = "/home/shiyy/nas/all_workspace/ReID/data/all_data_and_zip/Rpified_v0/RPIfield_v0/Data/Cam_9"
RPIfied(src_path,dst_dir,count, no_repeat_start_id=8683)
src_path = "/home/shiyy/nas/all_workspace/ReID/data/all_data_and_zip/Rpified_v0/RPIfield_v0/Data/Cam_10"
RPIfied(src_path,dst_dir,count, no_repeat_start_id=8683)
  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值