Pythonデータ読み出し
9941 ワード
フォルダの下の画像と対応するptsを読み込み、ptsファイルのデータを配列に読み込み、画像に描画します.
Pythonが行ごとにファイルの内容を読み取ることについてお話しします.
# -*- 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