Pythonデータ読み出し

9941 ワード

フォルダの下の画像と対応するptsを読み込み、ptsファイルのデータを配列に読み込み、画像に描画します.
 
# -*- coding:utf-8 -*-

"""

      

"""
import os
import cv2


list_dir = [
            "/Users/anitafang/Downloads/Datasets/jiaozheng/2017sdm/SDM/001/",
            "/Users/anitafang/Downloads/Datasets/jiaozheng/2017sdm/SDM/002/",
            "/Users/anitafang/Downloads/Datasets/jiaozheng/2017sdm/SDM/003/",
            "/Users/anitafang/Downloads/Datasets/jiaozheng/2017sdm/SDM/004/",
            "/Users/anitafang/Downloads/Datasets/jiaozheng/2017sdm/SDM/005/"
            ]



def readLmk(fileName):
    landmarks = []
    if not os.path.exists(fileName):
        return landmarks
    else:
        fp = open(fileName)
        i = 0
        for line in fp.xreadlines():
            #print line.strip("
") TT = line.strip("
") if i>2 and i<71: # print TT TT_temp = TT.split(" ") x = int(float(TT_temp[0])) y = int(float(TT_temp[1].strip("\r"))) landmarks.append((x,y)) i += 1 return landmarks def main(): for temp in list_dir: for dirpath,dirnames,filenames in os.walk(temp): for file in filenames: if file.split('.')[1] not in ['jpg','png']: continue print file fullpath = os.path.join(temp,file) ptsFile = temp + "000"+file.split('.')[0] + ".pts" # image = cv2.imread(fullpath) # pts landmarks = readLmk(ptsFile) for point in landmarks: cv2.circle(image,point,1,(255,0,0)) width = image.shape[0] height = image.shape[1] print (width,height) if width > 800: # 1000 image = cv2.resize(image,(800,height*800/width)) cv2.imshow("WW",image) cv2.waitKey(10) input = raw_input(' : ') if input == " ": print ("copy ") newpath="/Users/anitafang/Downloads/Datasets/jiaozheng/2017sdm/SDM2/001/" cmd = "cp " + fullpath + " " + ptsFile+ " "+ newpath print cmd os.system(cmd) if __name__ == '__main__': main()

 
Pythonが行ごとにファイルの内容を読み取ることについてお話しします.
 filename = "/Users/anitafang/Downloads/Datasets/jiaozheng/annot/sdm/001/annot/"+cnt+".pts"

        f1 = open(filename)
        print(filename)
        line_nu = 1
        for line in f1.xreadlines():
            if line_nu > 51 and line_nu<72:
                # print(line)
                linestr = line.strip()
                # print(linestr)
                linestrlist = linestr.split("\t")
                # print(linestrlist)
                # linelist = [int(i) for i in linestrlist]
                # print(linelist)

            line_nu += 1