-
Notifications
You must be signed in to change notification settings - Fork 0
/
DrawRadarImage.py
executable file
·103 lines (85 loc) · 3.63 KB
/
DrawRadarImage.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#!/usr/bin/python
import sys
import cv2
import os
from src.RadarImage import *
class DataDrawer:
def Draw(self, listOfRadarImage_, TARGET_DIRECTORY_):
self.createDirectory(TARGET_DIRECTORY_)
for eachRadarImage in listOfRadarImage_:
print("\tDraw: " + eachRadarImage.name)
self.drawEachRadarImage(eachRadarImage, TARGET_DIRECTORY_)
def __init__(self):
self.SCALE_OF_TARGET_IMAGE = 8
def createDirectory(self, directoryName_):
if not os.path.exists(directoryName_):
os.mkdir(directoryName_)
def drawEachRadarImage(self, radarImage_, TARGET_DIRECTORY_):
imageName = radarImage_.name
imageHH = (radarImage_.GetImageHH() * 255.0).astype(np.uint8)
#imageHH = cv2.cvtColor(imageHH, cv2.COLOR_GRAY2BGR)
imageHH = self.resizeImageToTargetSize(imageHH)
self.writeInfoToImage("HH", imageHH, radarImage_)
imageHV = (radarImage_.GetImageHV() * 255.0).astype(np.uint8)
#imageHV = cv2.cvtColor(imageHV, cv2.COLOR_GRAY2BGR)
imageHV = self.resizeImageToTargetSize(imageHV)
self.writeInfoToImage("HV", imageHV, radarImage_)
self.saveEachRadarImage(TARGET_DIRECTORY_, radarImage_, imageHH, imageHV)
def resizeImageToTargetSize(self, image_):
return cv2.resize(image_, (self.SCALE_OF_TARGET_IMAGE*image_.shape[0], self.SCALE_OF_TARGET_IMAGE*image_.shape[1]) )
def writeInfoToImage(self, prefix_, image_, radarImage_):
categoryInfo = "?"
if radarImage_.hasAnswer:
if radarImage_.isIceberg:
categoryInfo = "ice"
else:
categoryInfo = "ship"
angleInfo = "NA"
if radarImage_.hasAngle:
angleInfo = "{0:.2f}".format(radarImage_.angle)
imageInfo = prefix_ + "; " + categoryInfo + "; angle: " + angleInfo
cv2.putText(image_, imageInfo, (30, 30), cv2.FONT_HERSHEY_SIMPLEX, 0.8, (255, 255, 255), 2)
def saveEachRadarImage(self, TARGET_DIRECTORY_, radarImage_, imageHH_, imageHV_):
pathToSaveImageHH = radarImage_.name + "_HH.jpg"
pathToSaveImageHV = radarImage_.name + "_HV.jpg"
pathToSaveTotalImage = radarImage_.name + "_total.jpg"
if not radarImage_.hasAngle:
newDirectoryName = "NoAngle"
newDirectoryPath = os.path.join(TARGET_DIRECTORY_, newDirectoryName)
self.createDirectory(newDirectoryPath)
pathToSaveImageHH = os.path.join(newDirectoryPath, pathToSaveImageHH )
pathToSaveImageHV = os.path.join(newDirectoryPath, pathToSaveImageHV )
pathToSaveTotalImage = os.path.join(newDirectoryPath, pathToSaveTotalImage )
else:
pathToSaveImageHH = os.path.join(TARGET_DIRECTORY_, pathToSaveImageHH )
pathToSaveImageHV = os.path.join(TARGET_DIRECTORY_, pathToSaveImageHV )
pathToSaveTotalImage = os.path.join(TARGET_DIRECTORY_, pathToSaveTotalImage )
cv2.imwrite(pathToSaveImageHH, imageHH_)
cv2.imwrite(pathToSaveImageHV, imageHV_)
if __name__ == "__main__":
if len(sys.argv) != 3:
print("Usage: DrawRadarImage $(DataDir) $(TargetDir)")
print("Example: DrawRadarImage.py data/train.json train_peak")
else:
STATOI_DATA__PATH = sys.argv[1]
TARGET_DIR = sys.argv[2]
dataReader = StatoilDataReader()
listOfRadarImage = dataReader.Read(STATOI_DATA__PATH)
dataDrawer = DataDrawer()
dataDrawer.Draw(listOfRadarImage, TARGET_DIR)
summaryFilePathName = os.path.join(TARGET_DIR, "Summary.txt")
print("Write Summary to " + summaryFilePathName)
with open(summaryFilePathName, 'w') as summaryFile:
summaryFile.write("FileID \t\t Category \t\t Angle\n")
for each in listOfRadarImage:
category = "?"
angle = "NA"
if each.hasAnswer:
if each.isIceberg:
category = "ice"
else:
category = "ship"
if each.hasAngle:
angle = "{0:.2f}".format(each.angle)
info = each.name + "\t\t" + str(category) + "\t\t" + angle + "\n"
summaryFile.write(info)