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
class ImageOverlayManager(object): def __init__(self, monoCamerasConfig, robotName): self.viewName = monoCamerasConfig[0] self.desiredWidth = 400 self.position = [0, 0] self.usePicker = False self.imageView = None self.imagePicker = None self.robotName = robotName self._prevParent = None self._updateAspectRatio() def setWidth(self, width): self.desiredWidth = width self._updateAspectRatio() self.hide() self.show() def _updateAspectRatio(self): imageExtent = cameraview.imageManager.images[self.robotName][ self.viewName].GetExtent() if imageExtent[1] != -1 and imageExtent[3] != -1: self.imageSize = [imageExtent[1] + 1, imageExtent[3] + 1] imageAspectRatio = self.imageSize[0] / self.imageSize[1] self.size = [ self.desiredWidth, self.desiredWidth / imageAspectRatio ] def show(self): if self.imageView: return imageView = cameraview.views[self.viewName] self.imageView = imageView self._prevParent = imageView.view.parent() self._updateAspectRatio() imageView.view.hide() imageView.view.setParent(view) imageView.view.resize(self.size[0], self.size[1]) imageView.view.move(self.position[0], self.position[1]) 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()
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.desiredWidth = 400 self.position = [0, 0] self.usePicker = False self.imageView = None self.imagePicker = None self._prevParent = None self._updateAspectRatio() def setWidth(self, width): self.desiredWidth = width self._updateAspectRatio() self.hide() self.show() def _updateAspectRatio(self): imageExtent = cameraview.imageManager.images[self.viewName].GetExtent() if imageExtent[1] != -1 and imageExtent[3] != -1: self.imageSize = [imageExtent[1]+1, imageExtent[3]+1] imageAspectRatio = self.imageSize[0] / self.imageSize[1] self.size = [self.desiredWidth, self.desiredWidth / imageAspectRatio] def show(self): if self.imageView: return imageView = cameraview.views[self.viewName] self.imageView = imageView self._prevParent = imageView.view.parent() self._updateAspectRatio() imageView.view.hide() imageView.view.setParent(view) imageView.view.resize(self.size[0], self.size[1]) imageView.view.move(self.position[0], self.position[1]) 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()
def show(self): if self.imageView: return imageView = cameraview.views[self.viewName] self.imageView = imageView self._prevParent = imageView.view.parent() self._updateAspectRatio() imageView.view.hide() imageView.view.setParent(view) imageView.view.resize(self.size[0], self.size[1]) imageView.view.move(self.position[0], self.position[1]) 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, self.getImageChannel(), '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()
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()