class ImageBasedAffordanceFit(object): def __init__(self, imageView=None, numberOfPoints=1): self.imageView = imageView or cameraview.CameraImageView(cameraview.imageManager, 'CAMERA_LEFT', 'image view') self.imagePicker = ImagePointPicker(self.imageView, numberOfPoints=numberOfPoints) self.imagePicker.connectDoubleClickEvent(self.onImageViewDoubleClick) self.imagePicker.annotationFunc = self.onImageAnnotation self.imagePicker.start() self.pointCloudSource = 'lidar' self.pickLineRadius = 0.05 self.pickNearestToCamera = True def getPointCloud(self): assert self.pointCloudSource in ('lidar', 'stereo') if self.pointCloudSource == 'stereo': return segmentation.getDisparityPointCloud(decimation=1, removeOutliers=False) else: return segmentation.getCurrentRevolutionData() def onImageAnnotation(self, *points): polyData = self.getPointCloud() points = [self.getPointCloudLocationFromImage(p, self.imageView, polyData) for p in points] self.fit(polyData, points) def getPointCloudLocationFromImage(self, imagePixel, imageView, polyData): cameraPos, ray = imageView.getWorldPositionAndRay(imagePixel) return segmentation.extractPointsAlongClickRay(cameraPos, ray, polyData, distanceToLineThreshold=self.pickLineRadius, nearestToCamera=self.pickNearestToCamera) def onImageViewDoubleClick(self, displayPoint, modifiers, imageView): pass def fit(self, pointData, points): pass
def __init__(self, imageView=None, numberOfPoints=1): self.imageView = imageView or cameraview.CameraImageView( cameraview.imageManager, 'CAMERA_LEFT', 'image view') self.imagePicker = ImagePointPicker(self.imageView, numberOfPoints=numberOfPoints) self.imagePicker.connectDoubleClickEvent(self.onImageViewDoubleClick) self.imagePicker.annotationFunc = self.onImageAnnotation self.imagePicker.start() self.pointCloudSource = 'lidar' self.pickLineRadius = 0.05 self.pickNearestToCamera = True
class ImageBasedAffordanceFit(object): def __init__(self, imageView=None, numberOfPoints=1): self.imageView = imageView or cameraview.CameraImageView( cameraview.imageManager, 'CAMERA_LEFT', 'image view') self.imagePicker = ImagePointPicker(self.imageView, numberOfPoints=numberOfPoints) self.imagePicker.connectDoubleClickEvent(self.onImageViewDoubleClick) self.imagePicker.annotationFunc = self.onImageAnnotation self.imagePicker.start() self.pointCloudSource = 'lidar' self.pickLineRadius = 0.05 self.pickNearestToCamera = True def getPointCloud(self): assert self.pointCloudSource in ('lidar', 'stereo') if self.pointCloudSource == 'stereo': return segmentation.getDisparityPointCloud(decimation=1, removeOutliers=False) else: return segmentation.getCurrentRevolutionData() def onImageAnnotation(self, *points): polyData = self.getPointCloud() points = [ self.getPointCloudLocationFromImage(p, self.imageView, polyData) for p in points ] self.fit(polyData, points) def getPointCloudLocationFromImage(self, imagePixel, imageView, polyData): cameraPos, ray = imageView.getWorldPositionAndRay(imagePixel) return segmentation.extractPointsAlongClickRay( cameraPos, ray, polyData, distanceToLineThreshold=self.pickLineRadius, nearestToCamera=self.pickNearestToCamera) def onImageViewDoubleClick(self, displayPoint, modifiers, imageView): pass def fit(self, pointData, points): pass
def show(self): if self.imageView: return imageView = cameraview.views[self.viewName] self.imageView = imageView self._prevParent = imageView.view.parent() imageView.view.hide() imageView.view.setParent(view) imageView.view.resize(self.size, self.size) imageView.view.move(*self.position) imageView.view.show() if self.usePicker: self.imagePicker = ImagePointPicker(imageView) self.imagePicker.start()
def __init__(self, imageView=None, numberOfPoints=1): self.imageView = imageView or cameraview.CameraImageView(cameraview.imageManager, 'CAMERA_LEFT', 'image view') self.imagePicker = ImagePointPicker(self.imageView, numberOfPoints=numberOfPoints) self.imagePicker.connectDoubleClickEvent(self.onImageViewDoubleClick) self.imagePicker.annotationFunc = self.onImageAnnotation self.imagePicker.start() self.pointCloudSource = 'lidar' self.pickLineRadius = 0.05 self.pickNearestToCamera = True
class ImageOverlayManager(object): def __init__(self): self.viewName = 'CAMERA_LEFT' #self.viewName = 'KINECT_RGB' self.size = 400 self.position = [0, 0] self.usePicker = False self.imageView = None self.imagePicker = None self._prevParent = None def show(self): if self.imageView: return imageView = cameraview.views[self.viewName] self.imageView = imageView self._prevParent = imageView.view.parent() imageView.view.hide() imageView.view.setParent(view) imageView.view.resize(self.size, self.size) imageView.view.move(*self.position) imageView.view.show() if self.usePicker: self.imagePicker = ImagePointPicker(imageView) self.imagePicker.start() def hide(self): if self.imageView: self.imageView.view.hide() self.imageView.view.setParent(self._prevParent) self.imageView.view.show() self.imageView = None if self.imagePicker: self.imagePicker.stop()