Skip to content

Commit 446fca0

Browse files
authored
Merge pull request #11 from RobotLocomotion/pf-save-depth-no-pyc
Save depth images (cleaned up)
2 parents 8200548 + 1af954a commit 446fca0

File tree

4 files changed

+56
-24
lines changed

4 files changed

+56
-24
lines changed

.gitignore

+3
Original file line numberDiff line numberDiff line change
@@ -1 +1,4 @@
11
data/
2+
*pyc
3+
automation/scp_config.yaml
4+
src/ply

modules/labelfusion/imagecapture.py

+33-22
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
class ImageCapture(object):
1818

1919
def __init__(self, imageManager, fileSaveLocation,
20-
cameraName = "OPENNI_FRAME_LEFT", setupCallback=False):
20+
cameraName="OPENNI_FRAME_LEFT", setupCallback=False):
2121
self.imageManager = imageManager
2222
self.fileSaveLocation = fileSaveLocation
2323
self.cameraName = cameraName
@@ -31,27 +31,28 @@ def setupCallback(self):
3131
lcmUtils.addSubscriber("OPENNI_FRAME", lcmbotcore.images_t(),
3232
self.onImageMessage)
3333

34-
def saveImage(self, extension="rgb.png"):
34+
def saveImage(self, saveUtime=True, extension="rgb.png"):
3535
# construct filename where this image will be saved
3636
baseFilename = utils.convertImageIDToPaddedString(self.counter) + "_"
3737
baseFilename = os.path.join(self.fileSaveLocation, baseFilename)
38-
rgbFilename = baseFilename + extension
39-
utimeFilename = baseFilename + "utime.txt"
38+
imageFilename = baseFilename + extension
4039
self.counter += 1
4140

4241
# get the image and it's utime
4342
self.imageManager.updateImages()
4443
image = self.imageManager.getImage(self.cameraName)
45-
utime = self.imageManager.getUtime(self.cameraName)
4644
image = filterUtils.flipImage(image)
47-
print 'writing:', rgbFilename
48-
ImageCapture.writeImage(image, rgbFilename)
49-
50-
# now save the utime
51-
print 'writing:', utimeFilename
52-
text_file = open(utimeFilename, "w")
53-
text_file.write(str(utime))
54-
text_file.close()
45+
print 'writing:', imageFilename
46+
ImageCapture.writeImage(image, imageFilename)
47+
48+
if saveUtime:
49+
utime = self.imageManager.getUtime(self.cameraName)
50+
utimeFilename = baseFilename + "utime.txt"
51+
# now save the utime
52+
print 'writing:', utimeFilename
53+
text_file = open(utimeFilename, "w")
54+
text_file.write(str(utime))
55+
text_file.close()
5556

5657
@staticmethod
5758
def writeImage(image, filename):
@@ -80,8 +81,7 @@ def onImageMessage(self, msg):
8081

8182

8283
@staticmethod
83-
def readFromLogFile(lcmLogFilename, fileSaveLocation, channelName="OPENNI_FRAME",
84-
cameraName="OPENNI_FRAME_LEFT"):
84+
def readFromLogFile(lcmLogFilename, fileSaveLocation, channelName="OPENNI_FRAME", cameraName="OPENNI_FRAME_LEFT", saveDepth=False):
8585
"""
8686
Reads from lcmlog located at filename. Goes through each
8787
images_t() message on OPENNI_FRAME channel and saves it
@@ -94,26 +94,37 @@ def readFromLogFile(lcmLogFilename, fileSaveLocation, channelName="OPENNI_FRAME"
9494
if not os.path.isdir(fileSaveLocation):
9595
os.makedirs(fileSaveLocation)
9696

97-
# first construct imageManager object
97+
98+
# construct imageManager object
9899
imageManager = cameraview.ImageManager()
99-
imageManager.queue.addCameraStream(channelName, cameraName, lcmbotcore.images_t.LEFT)
100+
if saveDepth:
101+
imageManager.queue.addCameraStream(channelName, cameraName, lcmbotcore.images_t.DEPTH_MM_ZIPPED)
102+
else:
103+
imageManager.queue.addCameraStream(channelName, cameraName, lcmbotcore.images_t.LEFT)
100104
imageManager.addImage(cameraName)
101105

102106
# open the lcm log
103107
imageManager.queue.openLCMFile(lcmLogFilename)
104108

105109
imageCapture = ImageCapture(imageManager, fileSaveLocation,
106-
cameraName = "OPENNI_FRAME_LEFT", setupCallback=False)
110+
cameraName=cameraName, setupCallback=False)
107111

108112
while imageManager.queue.readNextImagesMessage():
109-
imageCapture.saveImage()
113+
if saveDepth:
114+
imageCapture.saveImage(saveUtime=False, extension="depth.png")
115+
else:
116+
imageCapture.saveImage(extension="rgb.png")
110117

111118
print "reached end of lcm log"
112119
return
113120

114-
def captureImages(logFolder):
115-
paths = utils.getFilenames(logFolder)
116-
ImageCapture.readFromLogFile(paths['lcmlog'], paths['images'])
121+
def captureImages(logFolder, saveDepth):
122+
corlPaths = utils.getFilenames(logFolder)
123+
124+
if saveDepth:
125+
ImageCapture.readFromLogFile(corlPaths['lcmlog'], corlPaths['images'], cameraName="OPENNI_FRAME_DEPTH_MM_ZIPPED", saveDepth=True)
126+
127+
ImageCapture.readFromLogFile(corlPaths['lcmlog'], corlPaths['images'], cameraName="OPENNI_FRAME_LEFT")
117128

118129

119130
def test():

scripts/bin/run_create_data

+11-1
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,22 @@ cd ..
77
up_dir=${PWD##*/}
88
cd $current_dir
99

10+
if [ $# -eq 0 ] || [ $1 != "-d" ]; then
11+
echo "Not extracting depth images. Use -d to extract them."
12+
saveDepth="False"
13+
elif [ $1 = "-d" ]; then
14+
echo "-d: Extracting depth images as well"
15+
saveDepth="True"
16+
fi
17+
1018
echo "First extracting images..."
1119

12-
directorPython $LABELFUSION_SOURCE_DIR/scripts/extractImagesFromLog.py --bot-config $LABELFUSION_SOURCE_DIR/config/bot_frames.cfg --logFolder $up_dir/$current_dir
20+
directorPython $LABELFUSION_SOURCE_DIR/scripts/extractImagesFromLog.py --bot-config $LABELFUSION_SOURCE_DIR/config/bot_frames.cfg --logFolder $up_dir/$current_dir --saveDepth $saveDepth
1321

1422
echo "Now rendering training images"
1523

24+
exit 1
25+
1626
directorPython $LABELFUSION_SOURCE_DIR/scripts/renderTrainingImages.py --bot-config $LABELFUSION_SOURCE_DIR/config/bot_frames.cfg --logFolder $up_dir/$current_dir
1727

1828
echo "Done."

scripts/extractImagesFromLog.py

+9-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,15 @@
2121

2222
parser = drcargs.getGlobalArgParser().getParser()
2323
parser.add_argument('--logFolder', type=str, dest='logFolder', help='location of top level folder for this log, relative to LabelFusion/data')
24+
parser.add_argument('--saveDepth', type=str, dest='saveDepth', help='string (True or False) whether or not to extract depth images from log')
2425
args = parser.parse_args()
2526
print "logFolder = ", args.logFolder
26-
labelfusion.imagecapture.captureImages(args.logFolder)
27+
28+
if args.saveDepth=="True":
29+
saveDepth=True
30+
else:
31+
saveDepth=False
32+
print saveDepth
33+
34+
labelfusion.imagecapture.captureImages(args.logFolder, saveDepth)
2735

0 commit comments

Comments
 (0)