def main(): img_name = "" readerFactory = vtk.vtkImageReader2Factory() imgReader = readerFactory.CreateImageReader2(img_name) imgReader.SetFileName(img_name) imgReader.Update() image = imgReader.GetOutput() center = [0,0] center[0] = (image.GetExtent()[1] + image.GetExtent()[0])/2 center[1] = (image.GetExtent()[3] + image.GetExtent()[2])/2 radius = image.GetExtent()[3]*2/5if image.GetExtent()[1]>image.GetExtent()[3]else image.GetExtent()[1]*2/5 drawing = vtk.vtkImageCanvasSource2D() # draw circle drawing.SetNumberOfScalarComponents(3) drawing.SetScalarTypeToUnsignedChar() drawing.SetExtent(image.GetExent()) drawing.SetDrawColor(0,0,0) drawing.FillBox(image.GetExent()[0],image.GetExent()[1], image.GetExent()[2],image.GetExtent()[3]) drawing.SetDrawColor(255,255,255) drawing.DrawCircle(center[0],center[1],radius)
def createScanlines(self, scanlineVolume): imgDim = self.inputVolume.GetImageData().GetDimensions() drawFilter = vtk.vtkImageCanvasSource2D() drawFilter.SetExtent(0,imgDim[0]-1,0,imgDim[1]-1,0,0) drawFilter.SetScalarTypeToUnsignedChar() drawFilter.SetDrawColor(0) # Color for background drawFilter.FillBox(0,imgDim[0]-1,0,imgDim[1]-1) # Initialize background drawFilter.SetDrawColor(1) # Color for scanlines # Draw each scanline for i in range(self.numberOfScanlines): drawFilter.FillTube(int(self.scanlines[i].startPoint[0]),int(self.scanlines[i].startPoint[1]),int(self.scanlines[i].endPoint[0]),int(self.scanlines[i].endPoint[1]),0.5) drawFilter.Update() # Copy scanline slice to match the Z-dimension of input US volume numOfSlices = imgDim[2] imageAppendFilter = vtk.vtkImageAppend() imageAppendFilter.SetAppendAxis(2) for _ in range(numOfSlices): imageAppendFilter.AddInputData(drawFilter.GetOutput()) imageAppendFilter.Update() # Set scanline imagedata scanlineVolume.SetIJKToRASMatrix(self.ijkToRas) scanlineVolume.SetRASToIJKMatrix(self.rasToIjk) scanlineVolume.SetAndObserveImageData(imageAppendFilter.GetOutput())
def render(self): """ Returns vtkImageData for pattern """ patternSource = vtk.vtkImageCanvasSource2D() patternSource.SetScalarTypeToUnsignedChar() patternSource.SetExtent(0, self.width, 0, self.height, 0, 0) patternSource.SetNumberOfScalarComponents(4) patternSource.SetDrawColor(255, 255, 255, 0) patternSource.FillBox(0, self.width, 0, self.height) patternSource.SetDrawColor(self.colors[0], self.colors[1], self.colors[2], self.opacity) self.paint(patternSource) patternSource.Update() return patternSource.GetOutput()
def main(): drawing = vtk.vtkImageCanvasSource2D() drawing.SetNumberOfScalarComponents(3) drawing.SetScalarTypeToUnsignedChar() drawing.SetExtent(0, 20, 0, 50, 0, 1) drawing.SetDrawColor(255.0, 255.0, 255.0) drawing.DrawCircle(5, 5, 3) number_of_pieces = 4 writer = vtk.vtkXMLPImageDataWriter() writer.SetInputConnection(drawing.GetOutputPort()) writer.SetFileName("Test.pvti") writer.SetNumberOfPieces(number_of_pieces) writer.SetEndPiece(number_of_pieces - 1) writer.SetStartPiece(0) writer.Update()
def __init__(self, parent=None): self.nameSize = 24 self.CrosshairNode = None self.CrosshairNodeObserverTag = None self.frame = qt.QFrame(parent) self.frame.setLayout(qt.QVBoxLayout()) # Set horizontal policy to Ignored to prevent a long segment or volume name making the widget wider. # If the module panel made larger then the image viewers would move and the mouse pointer position # would change in the image, potentially pointing outside the node with the long name, resulting in the # module panel collapsing to the original size, causing an infinite oscillation. qSize = qt.QSizePolicy() qSize.setHorizontalPolicy(qt.QSizePolicy.Ignored) qSize.setVerticalPolicy(qt.QSizePolicy.Preferred) self.frame.setSizePolicy(qSize) modulePath = slicer.modules.dataprobe.path.replace("DataProbe.py", "") self.iconsDIR = modulePath + '/Resources/Icons' self.showImage = False # Used in _createMagnifiedPixmap() self.imageCrop = vtk.vtkExtractVOI() self.canvas = vtk.vtkImageCanvasSource2D() self.painter = qt.QPainter() self.pen = qt.QPen() self._createSmall() # Helper class to calculate and display tensor scalars self.calculateTensorScalars = CalculateTensorScalars() # Observe the crosshair node to get the current cursor position self.CrosshairNode = slicer.mrmlScene.GetFirstNodeByClass( 'vtkMRMLCrosshairNode') if self.CrosshairNode: self.CrosshairNodeObserverTag = self.CrosshairNode.AddObserver( slicer.vtkMRMLCrosshairNode.CursorPositionModifiedEvent, self.processEvent)
def main(): colors = vtk.vtkNamedColors() # Create an image source1 = vtk.vtkImageCanvasSource2D() source1.SetScalarTypeToUnsignedChar() source1.SetNumberOfScalarComponents(3) source1.SetExtent(0, 100, 0, 100, 0, 0) source1.SetDrawColor(colors.GetColor4ub('SteelBlue')) source1.FillBox(0, 100, 0, 100) source1.SetDrawColor(colors.GetColor4ub('PaleGoldenrod')) source1.FillBox(10, 20, 10, 20) source1.FillBox(40, 50, 20, 30) source1.Update() # Convert the image to a polydata imageDataGeometryFilter = vtk.vtkImageDataGeometryFilter() imageDataGeometryFilter.SetInputConnection(source1.GetOutputPort()) imageDataGeometryFilter.Update() # Create a mapper and actor mapper = vtk.vtkPolyDataMapper() mapper.SetInputConnection(imageDataGeometryFilter.GetOutputPort()) actor = vtk.vtkActor() actor.SetMapper(mapper) # Visualization renderer = vtk.vtkRenderer() renderWindow = vtk.vtkRenderWindow() renderWindow.AddRenderer(renderer) renderWindowInteractor = vtk.vtkRenderWindowInteractor() renderWindowInteractor.SetRenderWindow(renderWindow) renderer.AddActor(actor) renderer.SetBackground(colors.GetColor3d('RosyBrown')) renderWindow.SetWindowName('ImageDataGeometryFilter') renderWindow.Render() renderWindowInteractor.Start()
def main(): # Create a black image with a red circle of radius 50 centered at (60, 60) drawing = vtk.vtkImageCanvasSource2D() drawing.SetScalarTypeToUnsignedChar( ) # PNGWriter requires unsigned char (or unsigned short) drawing.SetNumberOfScalarComponents(3) drawing.SetExtent(0, 150, 0, 120, 0, 0) # xmin, xmax, ymin, ymax, zmin, zmax drawing.SetDrawColor(255, 0, 0) # red drawing.DrawCircle(60, 60, 50) # parameters: x, y, radius # Create an image of text freeType = vtk.vtkFreeTypeTools.GetInstance() textProperty = vtk.vtkTextProperty() textProperty.SetColor(1.0, 1.0, 0.0) # yellow textProperty.SetFontSize(24) # alignment property textImage = vtk.vtkImageData() dpi = 50 # add argument int[2] a = [1, 2] freeType.RenderString(textProperty, "Test String", dpi, textImage, a) print(a) print(textImage.GetExtent()) # Combine the images blend = vtk.vtkImageBlend() blend.AddInputConnection(drawing.GetOutputPort()) #blend.AddInputData(textImage) blend.AddInputData(drawing.GetOutput()) blend.SetOpacity(0, 0.5) # background image: 50% opaque blend.SetOpacity(1, 1.0) # text: 100% opaque blend.Update() writer = vtk.vtkPNGWriter() writer.SetFileName("output.png") writer.SetInputConnection(blend.GetOutputPort()) writer.Write()
def main(argv): # Verify input arguments if len(argv) > 1: # Read the image jpeg_reader = vtkJPEGReader() if not jpeg_reader.CanReadFile(argv[1]): print("Error reading file %s" % argv[1]) return jpeg_reader.SetFileName(argv[1]) jpeg_reader.Update() image_data = jpeg_reader.GetOutput() else: canvas_source = vtkImageCanvasSource2D() canvas_source.SetExtent(0, 100, 0, 100, 0, 0) canvas_source.SetScalarTypeToUnsignedChar() canvas_source.SetNumberOfScalarComponents(3) canvas_source.SetDrawColor(127, 127, 100) canvas_source.FillBox(0, 100, 0, 100) canvas_source.SetDrawColor(100, 255, 255) canvas_source.FillTriangle(10, 10, 25, 10, 25, 25) canvas_source.SetDrawColor(255, 100, 255) canvas_source.FillTube(75, 75, 0, 75, 5.0) canvas_source.Update() image_data = canvas_source.GetOutput() # Create an image actor to display the image image_actor = vtkImageActor() if VTK_MAJOR_VERSION <= 5: image_actor.SetInput(image_data) else: image_actor.SetInputData(image_data) # Create a superquadric superquadric_source = vtkSuperquadricSource() superquadric_source.SetPhiRoundness(1.1) superquadric_source.SetThetaRoundness(.2) # Create a mapper and actor superquadric_mapper = vtkPolyDataMapper() superquadric_mapper.SetInputConnection(superquadric_source.GetOutputPort()) superquadric_actor = vtkActor() superquadric_actor.SetMapper(superquadric_mapper) vtk_renderer = vtkRenderer() vtk_renderer.SetLayer(1) # Set up the render window and renderers such that there is # a background layer and a foreground layer background_renderer = vtkRenderer() background_renderer.SetLayer(0) background_renderer.InteractiveOff() background_renderer.AddActor(image_actor) render_window = vtkRenderWindow() render_window.SetNumberOfLayers(2) render_window.AddRenderer(background_renderer) render_window.AddRenderer(vtk_renderer) render_window_interactor = vtkRenderWindowInteractor() render_window_interactor.SetRenderWindow(render_window) # Add actors to the renderers vtk_renderer.AddActor(superquadric_actor) # Render once to figure out where the background camera will be render_window.Render() # Set up the background camera to fill the renderer with the image origin = image_data.GetOrigin() spacing = image_data.GetSpacing() extent = image_data.GetExtent() camera = background_renderer.GetActiveCamera() camera.ParallelProjectionOn() xc = origin[0] + 0.5 * (extent[0] + extent[1]) * spacing[0] yc = origin[1] + 0.5 * (extent[2] + extent[3]) * spacing[1] # xd = (extent[1] - extent[0] + 1) * spacing[0] yd = (extent[3] - extent[2] + 1) * spacing[1] d = camera.GetDistance() camera.SetParallelScale(0.5 * yd) camera.SetFocalPoint(xc, yc, 0.0) camera.SetPosition(xc, yc, d) # Render again to set the correct view render_window.Render() # Interact with the window render_window_interactor.Start()
class MyStyle(vtk.vtkInteractorStyleImage): def __init__(self): pass def OnMouseWheelForward(self): pass the above method will not re-load the mouse wheel function the real functional method are applied by adding event observer ''' import vtk drawing = vtk.vtkImageCanvasSource2D() drawing.SetScalarTypeToUnsignedChar() drawing.SetNumberOfScalarComponents(3) drawing.SetExtent(0,20,0,50,0,0) drawing.FillBox(0,20,0,50) drawing.SetDrawColor(255,0,0,0) drawing.DrawCircle(9,10,5) drawing.Update() actor = vtk.vtkImageActor() actor.GetMapper().SetInputData(drawing.GetOutput()) actor.InterpolateOff() renderer = vtk.vtkRenderer()
def testWipe(self): # Image pipeline renWin = vtk.vtkRenderWindow() image1 = vtk.vtkImageCanvasSource2D() image1.SetNumberOfScalarComponents(3) image1.SetScalarTypeToUnsignedChar() image1.SetExtent(0, 79, 0, 79, 0, 0) image1.SetDrawColor(255, 255, 0) image1.FillBox(0, 79, 0, 79) image1.Update() image2 = vtk.vtkImageCanvasSource2D() image2.SetNumberOfScalarComponents(3) image2.SetScalarTypeToUnsignedChar() image2.SetExtent(0, 79, 0, 79, 0, 0) image2.SetDrawColor(0, 255, 255) image2.FillBox(0, 79, 0, 79) image2.Update() mapper = vtk.vtkImageMapper() mapper.SetInputConnection(image1.GetOutputPort()) mapper.SetColorWindow(255) mapper.SetColorLevel(127.5) actor = vtk.vtkActor2D() actor.SetMapper(mapper) imager = vtk.vtkRenderer() imager.AddActor2D(actor) renWin.AddRenderer(imager) wipes = ["Quad", "Horizontal", "Vertical", "LowerLeft", "LowerRight", "UpperLeft", "UpperRight"] wiper = dict() mapper = dict() actor = dict() imagers = dict() for wipe in wipes: wiper.update({wipe:vtk.vtkImageRectilinearWipe()}) wiper[wipe].SetInput1Data(image1.GetOutput()) wiper[wipe].SetInput2Data(image2.GetOutput()) wiper[wipe].SetPosition(20, 20) eval('wiper[wipe].SetWipeTo' + wipe + '()') mapper.update({wipe:vtk.vtkImageMapper()}) mapper[wipe].SetInputConnection(wiper[wipe].GetOutputPort()) mapper[wipe].SetColorWindow(255) mapper[wipe].SetColorLevel(127.5) actor.update({wipe:vtk.vtkActor2D()}) actor[wipe].SetMapper(mapper[wipe]) imagers.update({wipe:vtk.vtkRenderer()}) imagers[wipe].AddActor2D(actor[wipe]) renWin.AddRenderer(imagers[wipe]) imagers["Quad"].SetViewport(0, .5, .25, 1) imagers["Horizontal"].SetViewport(.25, .5, .5, 1) imagers["Vertical"].SetViewport(.5, .5, .75, 1) imagers["LowerLeft"].SetViewport(.75, .5, 1, 1) imagers["LowerRight"].SetViewport(0, 0, .25, .5) imagers["UpperLeft"].SetViewport(.25, 0, .5, .5) imagers["UpperRight"].SetViewport(.5, 0, .75, .5) imager.SetViewport(.75, 0, 1, .5) renWin.SetSize(400, 200) # render and interact with data iRen = vtk.vtkRenderWindowInteractor() iRen.SetRenderWindow(renWin); renWin.Render() img_file = "TestWipe.png" vtk.test.Testing.compareImage(iRen.GetRenderWindow(), vtk.test.Testing.getAbsImagePath(img_file), threshold=25) vtk.test.Testing.interact()
def main(argv): colors = vtk.vtkNamedColors() # Verify input arguments if (len(argv) != 2): print("Usage: " + argv[0] + " InputImageFilename e.g. Gourds2.jpg") return # Read the image readerFactory = vtk.vtkImageReader2Factory() imgReader = readerFactory.CreateImageReader2(argv[1]) imgReader.SetFileName(argv[1]) imgReader.Update() image = imgReader.GetOutput() # Find center of image center = [0, 0] center[0] = (image.GetExtent()[1] + image.GetExtent()[0]) // 2 center[1] = (image.GetExtent()[3] + image.GetExtent()[2]) // 2 # Pick a radius for the circle radius = { True: image.GetExtent()[1] * 2 / 5, False: image.GetExtent()[3] * 2 / 5 }[(image.GetExtent()[1] < image.GetExtent()[3])] drawColor1 = [0, 0, 0, 0] color1 = colors.GetColor3ub("Black") drawColor2 = [0, 0, 0, 0] color2 = colors.GetColor3ub("Seashell") for i in range(3): drawColor1[i] = color1[i] drawColor2[i] = color2[i] # Draw a circle in the center of the image drawing = vtk.vtkImageCanvasSource2D() drawing.SetNumberOfScalarComponents(3) drawing.SetScalarTypeToUnsignedChar() drawing.SetExtent(image.GetExtent()) drawing.SetDrawColor(drawColor1) drawing.FillBox(image.GetExtent()[0], image.GetExtent()[1], image.GetExtent()[2], image.GetExtent()[3]) drawing.SetDrawColor(drawColor2) drawing.DrawCircle(center[0], center[1], radius) # Combine the images (blend takes multiple connections on the 0th # input port) blend = vtk.vtkImageBlend() blend.AddInputConnection(imgReader.GetOutputPort()) blend.AddInputConnection(drawing.GetOutputPort()) blend.SetOpacity(0, .6) blend.SetOpacity(1, .4) # Display the result renderWindowInteractor = vtk.vtkRenderWindowInteractor() imageViewer = vtk.vtkImageViewer2() imageViewer.SetInputConnection(blend.GetOutputPort()) imageViewer.SetSize(640, 512) imageViewer.SetupInteractor(renderWindowInteractor) imageViewer.GetRenderer().ResetCamera() imageViewer.GetRenderer().SetBackground( colors.GetColor3d("LightSlateGray")) imageViewer.GetRenderWindow().SetWindowName("DrawOnAnImage") imageViewer.GetRenderWindow().Render() renderWindowInteractor.Initialize() renderWindowInteractor.Start() return 0
#!/usr/bin/env python import vtk import sys from vtk.util.misc import vtkGetDataRoot VTK_DATA_ROOT = vtkGetDataRoot() # Image pipeline size=400 image1 = vtk.vtkImageCanvasSource2D() image1.SetNumberOfScalarComponents(3) image1.SetScalarTypeToUnsignedChar() image1.SetExtent(0,size,0,size,0,0) image1.SetDrawColor(255,255,0) image1.FillBox(0,size,0,size) pad1 = vtk.vtkImageWrapPad() pad1.SetInputConnection(image1.GetOutputPort()) pad1.SetOutputWholeExtent(0,size,0,size,0,10) pad1.Update() image2 = vtk.vtkImageCanvasSource2D() image2.SetNumberOfScalarComponents(3) image2.SetScalarTypeToUnsignedChar() image2.SetExtent(0,size,0,size,0,0) image2.SetDrawColor(0,255,255) image2.FillBox(0,size,0,size) pad2 = vtk.vtkImageWrapPad() pad2.SetInputConnection(image2.GetOutputPort()) pad2.SetOutputWholeExtent(0,size,0,size,0,10) pad2.Update() checkers = vtk.vtkImageCheckerboard() checkers.SetInput1Data(pad1.GetOutput())
def main(argv): # Verify input arguments if len(argv) > 1: # Read the image jpeg_reader = vtkJPEGReader() if not jpeg_reader.CanReadFile(argv[1]): print("Error reading file %s" % argv[1]) return jpeg_reader.SetFileName(argv[1]) jpeg_reader.Update() image_data = jpeg_reader.GetOutput() else: canvas_source = vtkImageCanvasSource2D() canvas_source.SetExtent(0, 100, 0, 100, 0, 0) canvas_source.SetScalarTypeToUnsignedChar() canvas_source.SetNumberOfScalarComponents(3) canvas_source.SetDrawColor(127, 127, 100) canvas_source.FillBox(0, 100, 0, 100) canvas_source.SetDrawColor(100, 255, 255) canvas_source.FillTriangle(10, 10, 25, 10, 25, 25) canvas_source.SetDrawColor(255, 100, 255) canvas_source.FillTube(75, 75, 0, 75, 5.0) canvas_source.Update() image_data = canvas_source.GetOutput() # Create an image actor to display the image image_actor = vtkImageActor() if VTK_MAJOR_VERSION <= 5: image_actor.SetInput(image_data) else: image_actor.SetInputData(image_data) # Create a renderer to display the image in the background background_renderer = vtkRenderer() # Create a superquadric superquadric_source = vtkSuperquadricSource() superquadric_source.SetPhiRoundness(1.1) superquadric_source.SetThetaRoundness(.2) # Create a mapper and actor superquadric_mapper = vtkPolyDataMapper() superquadric_mapper.SetInputConnection(superquadric_source.GetOutputPort()) superquadric_actor = vtkActor() superquadric_actor.SetMapper(superquadric_mapper) scene_renderer = vtkRenderer() render_window = vtkRenderWindow() # Set up the render window and renderers such that there is # a background layer and a foreground layer background_renderer.SetLayer(0) background_renderer.InteractiveOff() scene_renderer.SetLayer(1) render_window.SetNumberOfLayers(2) render_window.AddRenderer(background_renderer) render_window.AddRenderer(scene_renderer) render_window_interactor = vtkRenderWindowInteractor() render_window_interactor.SetRenderWindow(render_window) # Add actors to the renderers scene_renderer.AddActor(superquadric_actor) background_renderer.AddActor(image_actor) # Render once to figure out where the background camera will be render_window.Render() # Set up the background camera to fill the renderer with the image origin = image_data.GetOrigin() spacing = image_data.GetSpacing() extent = image_data.GetExtent() camera = background_renderer.GetActiveCamera() camera.ParallelProjectionOn() xc = origin[0] + 0.5*(extent[0] + extent[1]) * spacing[0] yc = origin[1] + 0.5*(extent[2] + extent[3]) * spacing[1] # xd = (extent[1] - extent[0] + 1) * spacing[0] yd = (extent[3] - extent[2] + 1) * spacing[1] d = camera.GetDistance() camera.SetParallelScale(0.5 * yd) camera.SetFocalPoint(xc, yc, 0.0) camera.SetPosition(xc, yc, d) # Render again to set the correct view render_window.Render() # Interact with the window render_window_interactor.Start()
def main(argv): colors = vtk.vtkNamedColors() imageData = None # Verify input arguments if len(argv) > 1: # Read the image readerFactory = vtk.vtkImageReader2Factory() imageReader = readerFactory.CreateImageReader2(argv[1]) imageReader.SetFileName(argv[1]) imageReader.Update() imageData = imageReader.GetOutput() else: drawColor1 = 4 * [255] drawColor2 = 4 * [255] drawColor3 = 4 * [255] color1 = colors.GetColor3ub("warm_grey") color2 = colors.GetColor3ub("DarkCyan") color3 = colors.GetColor3ub("LightCoral") for i in range(3): drawColor1[i] = color1[i] drawColor2[i] = color2[i] drawColor3[i] = color3[i] canvasSource = vtk.vtkImageCanvasSource2D() canvasSource.SetExtent(0, 100, 0, 100, 0, 0) canvasSource.SetScalarTypeToUnsignedChar() canvasSource.SetNumberOfScalarComponents(3) canvasSource.SetDrawColor(drawColor1) canvasSource.FillBox(0, 100, 0, 100) canvasSource.SetDrawColor(drawColor2) canvasSource.FillTriangle(10, 10, 25, 10, 25, 25) canvasSource.SetDrawColor(drawColor3) canvasSource.FillTube(75, 75, 0, 75, 5.0) canvasSource.Update() imageData = canvasSource.GetOutput() # Create an image actor to display the image imageActor = vtk.vtkImageActor() imageActor.SetInputData(imageData) # Create a renderer to display the image in the background backgroundRenderer = vtk.vtkRenderer() # Create a superquadric superquadricSource = vtk.vtkSuperquadricSource() superquadricSource.SetPhiRoundness(1.1) superquadricSource.SetThetaRoundness(.2) # Create a mapper and actor superquadricMapper = vtk.vtkPolyDataMapper() superquadricMapper.SetInputConnection(superquadricSource.GetOutputPort()) superquadricActor = vtk.vtkActor() superquadricActor.SetMapper(superquadricMapper) superquadricActor.GetProperty().SetColor(colors.GetColor3d("NavajoWhite")) sceneRenderer = vtk.vtkRenderer() renderWindow = vtk.vtkRenderWindow() # Set up the render window and renderers such that there is # a background layer and a foreground layer backgroundRenderer.SetLayer(0) backgroundRenderer.InteractiveOff() sceneRenderer.SetLayer(1) renderWindow.SetNumberOfLayers(2) renderWindow.AddRenderer(backgroundRenderer) renderWindow.AddRenderer(sceneRenderer) renderWindow.SetWindowName("BackgroundImage") renderWindowInteractor = vtk.vtkRenderWindowInteractor() renderWindowInteractor.SetRenderWindow(renderWindow) # Add actors to the renderers sceneRenderer.AddActor(superquadricActor) backgroundRenderer.AddActor(imageActor) # Render once to figure out where the background camera will be renderWindow.Render() # Set up the background camera to fill the renderer with the image origin = imageData.GetOrigin() spacing = imageData.GetSpacing() extent = imageData.GetExtent() camera = backgroundRenderer.GetActiveCamera() camera.ParallelProjectionOn() xc = origin[0] + 0.5 * (extent[0] + extent[1]) * spacing[0] yc = origin[1] + 0.5 * (extent[2] + extent[3]) * spacing[1] yd = (extent[3] - extent[2] + 1) * spacing[1] d = camera.GetDistance() camera.SetParallelScale(0.5 * yd) camera.SetFocalPoint(xc, yc, 0.0) camera.SetPosition(xc, yc, d) # Render again to set the correct view renderWindow.Render() # Interact with the window renderWindowInteractor.Start()
#!/usr/bin/env python import vtk from vtk.util.misc import vtkGetDataRoot VTK_DATA_ROOT = vtkGetDataRoot() # Performs a correlation in frequency domain. s1 = vtk.vtkImageCanvasSource2D() s1.SetScalarTypeToFloat() s1.SetExtent(0,255,0,255,0,0) s1.SetDrawColor(0) s1.FillBox(0,255,0,255) s1.SetDrawColor(2.0) s1.FillTriangle(10,100,190,150,40,250) s2 = vtk.vtkImageCanvasSource2D() s2.SetScalarTypeToFloat() s2.SetExtent(0,31,0,31,0,0) s2.SetDrawColor(0.0) s2.FillBox(0,31,0,31) s2.SetDrawColor(2.0) s2.FillTriangle(10,1,25,10,1,5) fft1 = vtk.vtkImageFFT() fft1.SetDimensionality(2) fft1.SetInputConnection(s1.GetOutputPort()) fft1.ReleaseDataFlagOff() fft1.Update() # Pad kernel out to same size as image. pad2 = vtk.vtkImageConstantPad() pad2.SetInputConnection(s2.GetOutputPort()) pad2.SetOutputWholeExtent(0,255,0,255,0,0) fft2 = vtk.vtkImageFFT() fft2.SetDimensionality(2)
pass def OnMouseWheelForward(self): pass the above method will not re-load the mouse wheel function the real functional method are applied by adding event observer Solution: Register this event: self.AddObserver(...) 2. AddObserver, Observer function conflict Solution: call RemoveObservers() first to unregister all event functions ''' import vtk drawing = vtk.vtkImageCanvasSource2D() drawing.SetScalarTypeToUnsignedChar() drawing.SetNumberOfScalarComponents(3) drawing.SetExtent(0, 20, 0, 50, 0, 0) drawing.FillBox(0, 20, 0, 50) drawing.SetDrawColor(255, 0, 0, 0) drawing.DrawCircle(9, 10, 5) drawing.Update() actor = vtk.vtkImageActor() actor.GetMapper().SetInputData(drawing.GetOutput()) actor.InterpolateOff() renderer = vtk.vtkRenderer() renderWin = vtk.vtkRenderWindow()
#!/usr/bin/env python import vtk from vtk.test import Testing from vtk.util.misc import vtkGetDataRoot VTK_DATA_ROOT = vtkGetDataRoot() # A script to test the threshold filter. # Values above 2000 are set to 255. # Values below 2000 are set to 0. # Image pipeline imageCanvas = vtk.vtkImageCanvasSource2D() imageCanvas.SetScalarTypeToUnsignedChar() imageCanvas.SetNumberOfScalarComponents(3) imageCanvas.SetExtent(0,300,0,300,0,0) # background black imageCanvas.SetDrawColor(0) imageCanvas.FillBox(0,511,0,511) jreader = vtk.vtkJPEGReader() jreader.SetFileName("" + str(VTK_DATA_ROOT) + "/Data/beach.jpg") jreader.Update() imageCanvas.DrawImage(100,100,jreader.GetOutput(),0,0,300,300) imageCanvas.DrawImage(0,100,jreader.GetOutput()) imageCanvas.DrawImage(100,0,jreader.GetOutput(),0,0,300,300) imageCanvas.DrawImage(0,0,jreader.GetOutput(),50,50,100,100) imageCanvas.DrawImage(10,10,jreader.GetOutput(),50,50,100,100) imageCanvas.DrawImage(20,20,jreader.GetOutput(),50,50,100,100) imageCanvas.DrawImage(30,30,jreader.GetOutput(),50,50,100,100) imageCanvas.DrawImage(40,40,jreader.GetOutput(),50,50,100,100) imageCanvas.DrawImage(50,50,jreader.GetOutput(),50,50,100,100) imageCanvas.DrawImage(60,60,jreader.GetOutput(),50,50,100,100) imageCanvas.DrawImage(70,70,jreader.GetOutput(),50,50,100,100)
def main(): colors = vtk.vtkNamedColors() # Create an image source1 = vtk.vtkImageCanvasSource2D() source1.SetScalarTypeToUnsignedChar() source1.SetNumberOfScalarComponents(3) source1.SetExtent(0, 100, 0, 100, 0, 0) source1.SetDrawColor(0, 0, 0, 1) source1.FillBox(0, 100, 0, 100) source1.SetDrawColor(255, 0, 0, 1) source1.FillBox(10, 20, 10, 20) source1.FillBox(40, 50, 20, 30) source1.Update() # Convert the image to a polydata imageDataGeometryFilter = vtk.vtkImageDataGeometryFilter() # imageDataGeometryFilter = vtk.vtkStructuredPointsGeometryFilter() imageDataGeometryFilter.SetInputConnection(source1.GetOutputPort()) imageDataGeometryFilter.Update() # p2c = vtk.vtkPointDataToCellData() # p2c.SetInputConnection(imageDataGeometryFilter.GetOutputPort()) # stripper = vtk.vtkStripper() # stripper.SetInputConnection(p2c.GetOutputPort()) # # stripper.PassCellDataAsFieldDataOn() p2c = vtk.vtkPointDataToCellData() p2c.PassPointDataOn() # p2c.SetInputConnection(source1.GetOutputPort()) # geom_filter = vtk.vtkGeometryFilter() # geom_filter.SetInputConnection(p2c.GetOutputPort()) # p2c.SetInputConnection(imageDataGeometryFilter.GetOutputPort()) # stripper = vtk.vtkStripper() # stripper.SetInputConnection(p2c.GetOutputPort()) # stripper.PassCellDataAsFieldDataOn() sphere = vtk.vtkSphereSource() # Create a mapper and actor mapper = vtk.vtkPolyDataMapper() # mapper = vtk.vtkPolyDataMapper2D() # mapper.SetScalarModeToUseCellData() mapper.SetInputConnection(imageDataGeometryFilter.GetOutputPort()) # mapper.SetInputConnection(geom_filter.GetOutputPort()) # mapper.SetInputConnection(p2c.GetOutputPort()) # mapper.SetInputConnection(sphere.GetOutputPort()) actor = vtk.vtkActor() # actor.GetProperty().BackfaceCullingOn() # actor.GetProperty().LightingOff() # actor.GetProperty().ShadingOn() # actor.GetProperty().SetAmbient(1.0) # actor.GetProperty().SetDiffuse(0.0) # actor.GetProperty().SetSpecular(0.0) # actor.GetProperty().SetInterpolationToGouraud() # actor.GetProperty().SetInterpolationToFlat() # interp = actor.GetProperty().GetInterpolation() # # # print('interp ',interp ) # actor.GetProperty().SetInterpolationToFlat() # actor.GetProperty().SetInterpolation(0) # interp = actor.GetProperty().GetInterpolation() # print('interp ', interp) actor.SetMapper(mapper) actor.GetProperty().SetInterpolationToFlat() actor.GetProperty().BackfaceCullingOn() actor.GetProperty().LightingOff() actor.GetProperty().ShadingOn() actor.GetProperty().SetAmbient(1.0) actor.GetProperty().SetDiffuse(0.0) actor.GetProperty().SetSpecular(0.0) actor.GetProperty().SetInterpolationToGouraud() actor.GetProperty().SetInterpolationToFlat() # Visualization renderer = vtk.vtkRenderer() renderWindow = vtk.vtkRenderWindow() renderWindow.AddRenderer(renderer) renderWindowInteractor = vtk.vtkRenderWindowInteractor() renderWindowInteractor.SetRenderWindow(renderWindow) renderer.AddActor(actor) renderer.SetBackground( colors.GetColor3d("white")) # Background color white renderWindow.Render() renderWindowInteractor.Start()
def main(): colors = vtk.vtkNamedColors() # Verify input arguments fn = get_program_parameters() if fn: # Read the image jpeg_reader = vtk.vtkJPEGReader() if not jpeg_reader.CanReadFile(fn): print('Error reading file:', fn) return jpeg_reader.SetFileName(fn) jpeg_reader.Update() image_data = jpeg_reader.GetOutput() else: canvas_source = vtk.vtkImageCanvasSource2D() canvas_source.SetExtent(0, 100, 0, 100, 0, 0) canvas_source.SetScalarTypeToUnsignedChar() canvas_source.SetNumberOfScalarComponents(3) canvas_source.SetDrawColor(colors.GetColor4ub('warm_grey')) canvas_source.FillBox(0, 100, 0, 100) canvas_source.SetDrawColor(colors.GetColor4ub('DarkCyan')) canvas_source.FillTriangle(10, 10, 25, 10, 25, 25) canvas_source.SetDrawColor(colors.GetColor4ub('LightCoral')) canvas_source.FillTube(75, 75, 0, 75, 5.0) canvas_source.Update() image_data = canvas_source.GetOutput() # Create an image actor to display the image image_actor = vtk.vtkImageActor() image_actor.SetInputData(image_data) # Create a renderer to display the image in the background background_renderer = vtk.vtkRenderer() # Create a superquadric superquadric_source = vtk.vtkSuperquadricSource() superquadric_source.SetPhiRoundness(1.1) superquadric_source.SetThetaRoundness(.2) # Create a mapper and actor superquadric_mapper = vtk.vtkPolyDataMapper() superquadric_mapper.SetInputConnection(superquadric_source.GetOutputPort()) superquadric_actor = vtk.vtkActor() superquadric_actor.SetMapper(superquadric_mapper) superquadric_actor.GetProperty().SetColor(colors.GetColor3d('NavajoWhite')) scene_renderer = vtk.vtkRenderer() render_window = vtk.vtkRenderWindow() # Set up the render window and renderers such that there is # a background layer and a foreground layer background_renderer.SetLayer(0) background_renderer.InteractiveOff() scene_renderer.SetLayer(1) render_window.SetNumberOfLayers(2) render_window.AddRenderer(background_renderer) render_window.AddRenderer(scene_renderer) render_window.SetWindowName('BackgroundImage') render_window_interactor = vtk.vtkRenderWindowInteractor() render_window_interactor.SetRenderWindow(render_window) # Add actors to the renderers scene_renderer.AddActor(superquadric_actor) background_renderer.AddActor(image_actor) # Render once to figure out where the background camera will be render_window.Render() # Set up the background camera to fill the renderer with the image origin = image_data.GetOrigin() spacing = image_data.GetSpacing() extent = image_data.GetExtent() camera = background_renderer.GetActiveCamera() camera.ParallelProjectionOn() xc = origin[0] + 0.5 * (extent[0] + extent[1]) * spacing[0] yc = origin[1] + 0.5 * (extent[2] + extent[3]) * spacing[1] # xd = (extent[1] - extent[0] + 1) * spacing[0] yd = (extent[3] - extent[2] + 1) * spacing[1] d = camera.GetDistance() camera.SetParallelScale(0.5 * yd) camera.SetFocalPoint(xc, yc, 0.0) camera.SetPosition(xc, yc, d) # Render again to set the correct view render_window.Render() # Interact with the window render_window_interactor.Start()
import vtk # # Test butterfly subdivision of point data # sphere = vtk.vtkSphereSource() sphere.SetPhiResolution(11) sphere.SetThetaResolution(11) source1 = vtk.vtkImageCanvasSource2D() source1.SetScalarTypeToUnsignedChar() source1.SetNumberOfScalarComponents(3) source1.SetExtent(0, 100, 0, 100, 0, 0) source1.SetDrawColor(0, 0, 0, 1) source1.FillBox(0, 100, 0, 100) source1.SetDrawColor(255, 0, 0, 1) source1.FillBox(10, 20, 10, 20) source1.FillBox(40, 50, 20, 30) source1.Update() colorIt = vtk.vtkElevationFilter() colorIt.SetInputConnection(source1.GetOutputPort()) colorIt.SetLowPoint(0, 0, -.5) colorIt.SetHighPoint(0, 0, .5) butterfly = vtk.vtkButterflySubdivisionFilter() butterfly.SetInputConnection(colorIt.GetOutputPort()) butterfly.SetNumberOfSubdivisions(3) lut = vtk.vtkLookupTable() lut.SetNumberOfColors(256) lut.Build() mapper = vtk.vtkPolyDataMapper() mapper.SetInputConnection(butterfly.GetOutputPort())
def main(): colors = vtk.vtkNamedColors() # colors.SetColor("Bkg", 0.2, 0.3, 0.4) # A sphere sphereSource = vtk.vtkSphereSource() sphereSource.SetCenter(0.0, 0.0, 0.0) sphereSource.SetRadius(4.0) sphereSource.SetPhiResolution(4) sphereSource.SetThetaResolution(8) sphereSource.Update() mapper = vtk.vtkPolyDataMapper() mapper.SetInputConnection(sphereSource.GetOutputPort()) actor = vtk.vtkActor() actor.SetMapper(mapper) actor.GetProperty().SetColor(colors.GetColor3d("MistyRose")) # A renderer and render window renderer = vtk.vtkRenderer() renderWindow = vtk.vtkRenderWindow() renderWindow.AddRenderer(renderer) renderWindow.SetWindowName("LogoWidget") renderer.AddActor(actor) # An interactor renderWindowInteractor = vtk.vtkRenderWindowInteractor() renderWindowInteractor.SetRenderWindow(renderWindow) # Create an image drawing = vtk.vtkImageCanvasSource2D() drawing.SetScalarTypeToUnsignedChar() drawing.SetNumberOfScalarComponents(3) drawing.SetExtent(0, 200, 0, 200, 0, 0) drawColor1 = [0, 0, 0] color1 = colors.GetColor3ub("Coral") drawColor2 = [0, 0, 0] color2 = colors.GetColor3ub("Black") for i in range(3): drawColor1[i] = color1[i] drawColor2[i] = color2[i] # Clear the image # Note: SetDrawColour() uses double values of the rgb colors in the # range [0 ... 255] # So SetDrawColour(255, 255, 255) is white. drawing.SetDrawColor(*drawColor1) drawing.FillBox(0, 200, 0, 200) drawing.SetDrawColor(*drawColor2) drawing.DrawCircle(100, 100, 50) drawing.Update() logoRepresentation = vtk.vtkLogoRepresentation() logoRepresentation.SetImage(drawing.GetOutput()) logoRepresentation.SetPosition(0, 0) logoRepresentation.SetPosition2(0.4, 0.4) logoRepresentation.GetImageProperty().SetOpacity(.7) logoWidget = vtk.vtkLogoWidget() logoWidget.SetInteractor(renderWindowInteractor) logoWidget.SetRepresentation(logoRepresentation) renderWindow.Render() logoWidget.On() renderer.SetBackground(colors.GetColor3d("MidnightBLue")) renderWindow.Render() renderWindowInteractor.Start()
#!/usr/bin/env python import vtk from vtk.util.misc import vtkGetDataRoot VTK_DATA_ROOT = vtkGetDataRoot() # Use the painter to draw using colors. # This is not a pipeline object. It will support pipeline objects. # Please do not use this object directly. imageCanvas = vtk.vtkImageCanvasSource2D() imageCanvas.SetNumberOfScalarComponents(3) imageCanvas.SetScalarTypeToUnsignedChar() imageCanvas.SetExtent(0, 320, 0, 320, 0, 0) imageCanvas.SetDrawColor(0, 0, 0) imageCanvas.FillBox(0, 511, 0, 511) # r, g, b imageCanvas.SetDrawColor(255, 0, 0) imageCanvas.FillBox(0, 50, 0, 100) imageCanvas.SetDrawColor(128, 128, 0) imageCanvas.FillBox(50, 100, 0, 100) imageCanvas.SetDrawColor(0, 255, 0) imageCanvas.FillBox(100, 150, 0, 100) imageCanvas.SetDrawColor(0, 128, 128) imageCanvas.FillBox(150, 200, 0, 100) imageCanvas.SetDrawColor(0, 0, 255) imageCanvas.FillBox(200, 250, 0, 100) imageCanvas.SetDrawColor(128, 0, 128) imageCanvas.FillBox(250, 300, 0, 100) # intensity scale imageCanvas.SetDrawColor(5, 5, 5) imageCanvas.FillBox(0, 50, 110, 210) imageCanvas.SetDrawColor(55, 55, 55)
#!/usr/bin/env python import vtk from vtk.util.misc import vtkGetDataRoot VTK_DATA_ROOT = vtkGetDataRoot() # Performs a correlation in frequency domain. s1 = vtk.vtkImageCanvasSource2D() s1.SetScalarTypeToFloat() s1.SetExtent(0, 255, 0, 255, 0, 0) s1.SetDrawColor(0) s1.FillBox(0, 255, 0, 255) s1.SetDrawColor(2.0) s1.FillTriangle(10, 100, 190, 150, 40, 250) s2 = vtk.vtkImageCanvasSource2D() s2.SetScalarTypeToFloat() s2.SetExtent(0, 31, 0, 31, 0, 0) s2.SetDrawColor(0.0) s2.FillBox(0, 31, 0, 31) s2.SetDrawColor(2.0) s2.FillTriangle(10, 1, 25, 10, 1, 5) fft1 = vtk.vtkImageFFT() fft1.SetDimensionality(2) fft1.SetInputConnection(s1.GetOutputPort()) fft1.ReleaseDataFlagOff() fft1.Update() # Pad kernel out to same size as image. pad2 = vtk.vtkImageConstantPad() pad2.SetInputConnection(s2.GetOutputPort()) pad2.SetOutputWholeExtent(0, 255, 0, 255, 0, 0) fft2 = vtk.vtkImageFFT() fft2.SetDimensionality(2)
alpha.SetInputConnection(luminance.GetOutputPort()) alpha.SetLookupTable(table) alpha.SetOutputFormatToLuminance() # make luminanceAlpha and colorAlpha versions luminanceAlpha = vtk.vtkImageAppendComponents() luminanceAlpha.AddInputConnection(luminance.GetOutputPort()) luminanceAlpha.AddInputConnection(alpha.GetOutputPort()) colorAlpha = vtk.vtkImageAppendComponents() colorAlpha.AddInputConnection(color.GetOutputPort()) colorAlpha.AddInputConnection(alpha.GetOutputPort()) # create pseudo alpha values for background bmask = vtk.vtkImageCanvasSource2D() bmask.SetScalarTypeToUnsignedChar() bmask.SetNumberOfScalarComponents(1) bmask.SetExtent(0, 127, 0, 127, 0, 0) bmask.SetDrawColor(0, 0, 0, 0) bmask.FillBox(0, 127, 0, 127) bmask.SetDrawColor(255, 0, 0, 0) bmask.DrawCircle(64, 64, 40) bmask.FillPixel(64, 64) backgroundAlpha = vtk.vtkImageAppendComponents() backgroundAlpha.AddInputConnection(backgroundColor.GetOutputPort()) backgroundAlpha.AddInputConnection(bmask.GetOutputPort()) foregrounds = ["luminance", "luminanceAlpha", "color", "colorAlpha"] backgrounds = ["backgroundAlpha", "backgroundColor", "backgroundLuminance"]