<table cellspacing="0" cellpadding="0" border="0" ><tr><td valign="top" style="font: inherit;">Hello everyone<br>I am working on a set of images. I am using vtkimageimport to to read an array. everything works well. but when i use interactor to make changes in the image nothing happens. I dont know if it is getting updated or there is some mistake in my code.<br>What i would like to do is when key "y" is pressed, the value half the array should be set to zero. which is not happening.<br>Please help<br>Thank you<br>Frency varghese<br>Here is my code<br><br><br>#include <iostream><br>#include <fstream><br>#include <string><br>#include "vtkImageImport.h"<br>#include "vtkRenderWindowInteractor.h"<br>#include "vtkRenderer.h"<br>#include "vtkRenderWindow.h"<br>#include "vtkContourFilter.h"<br>#include "vtkPolyDataNormals.h"<br>#include "vtkPolyDataMapper.h"<br>#include "vtkActor.h"<br>#include "vtkCamera.h"<br>#include
"vtkImageFlip.h"<br>#include "vtkCommand.h"<br><br>using namespace std;<br> const int x_max=54;<br> const int y_max=47;<br> const int z_max=63;<br><br>unsigned char* p= new unsigned char[x_max*y_max*z_max];<br><br><br>class vtkMyCallback : public vtkCommand<br>{<br>public:<br> static vtkMyCallback *New()<br> { return new vtkMyCallback;}<br> void Delete()<br> { delete this; }<br> virtual void Execute(vtkObject *caller, unsigned long, void*)<br> {<br> int x,y,z;<br> int index;<br> vtkRenderWindowInteractor *iren= reinterpret_cast<vtkRenderWindowInteractor*>(caller);<br><br> char key = *(iren->GetKeySym());<br> if (key=='y')<br>
{<br> for(z=0; z<z_max; z++)<br> {<br> for(y=0; y<y_max; y++)<br> {<br> for(x=0; x<x_max; x++)<br> {<br> index=(z*x_max*y_max+y*x_max+x);<br> if (z<z_max/2)<br> p[index]=0;<br> }<br> }<br> }<br><br> }<br> if (key=='n') cout << "you
chose no" << endl;<br>}<br>};<br><br>int main()<br> {<br> int x;<br> int y;<br> int z;<br><br> unsigned char* p1= new unsigned char[x_max*y_max*z_max];<br> <br> ifstream inputFile;<br> inputFile.open("/home/owner/Desktop/iteration/15s.raw",ios::binary);<br> <br> for(z=0; z<z_max; z++)<br> {<br> for(y=0; y<y_max; y++)<br> {<br> for(x=0; x<x_max; x++)<br> {<br> <br><br> inputFile.read((char*)
&(p[z*x_max*y_max+y*x_max+x]),1);<br> inputFile.read((char*) &(p1[z*x_max*y_max+y*x_max+x]),1);<br> <br> }<br><br> }<br> }<br> vtkRenderer *aRenderer = vtkRenderer::New();<br> vtkRenderWindow *renWin = vtkRenderWindow::New();<br> renWin->AddRenderer(aRenderer);<br> vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();<br> iren->SetRenderWindow(renWin);<br><br>vtkImageImport *Importer = vtkImageImport::New();<br>Importer->SetDataExtent(0, 53, 0, 46, 0, 62);<br> Importer->SetWholeExtent(0, 53, 0, 46, 0,
62);<br> Importer->SetDataSpacing(1.0,1.0,1.0);<br>Importer->SetNumberOfScalarComponents(1);<br> Importer->SetDataScalarTypeToUnsignedChar();<br>Importer->SetImportVoidPointer(p);<br><br>vtkContourFilter *skinExtractor = vtkContourFilter::New();<br> skinExtractor->SetInputConnection(Importer->GetOutputPort());<br> skinExtractor->SetValue(0,100);<br> vtkPolyDataNormals *skinNormals = vtkPolyDataNormals::New();<br> skinNormals->SetInputConnection(skinExtractor->GetOutputPort());<br> skinNormals->SetFeatureAngle(60);<br> vtkPolyDataMapper *skinMapper = vtkPolyDataMapper::New();<br> skinMapper->SetInputConnection(skinNormals->GetOutputPort());<br> skinMapper->ScalarVisibilityOff();<br> vtkActor *skin = vtkActor::New();<br>
skin->SetMapper(skinMapper);<br>//skin->Update();<br><br> vtkCamera *aCamera = vtkCamera::New();<br> aCamera->SetViewUp (0, 0, -1);<br> aCamera->SetPosition (0, 1, 0);<br> aCamera->SetFocalPoint (0, 0, 0);<br> aCamera->ComputeViewPlaneNormal();<br><br> aRenderer->AddActor(skin);<br> aRenderer->SetActiveCamera(aCamera);<br> aRenderer->ResetCamera ();<br> aCamera->Dolly(1.5);<br> //renWin1->SetParentId(m_hWnd);<br> iren =vtkRenderWindowInteractor::New();<br> iren->SetRenderWindow(renWin);<br> renWin->Render();<br> renWin->SetSize( 500, 500 );<br>//renWin->Update();<br><br> vtkMyCallback *callback = vtkMyCallback::New();<br> iren->AddObserver(vtkCommand::KeyPressEvent, callback);<br> //iren->Update();<br><br> iren->Initialize();<br>
iren->Start();<br> // Importing the Buffer<br><br> //char dummy;<br>//mporter->Update();<br><br> inputFile.close();<br>Importer->Delete();<br> skinExtractor->Delete();<br> skinMapper->Delete();<br> skin->Delete();<br>//outlineData->Delete();<br>// mapOutline->Delete();<br> //outline->Delete();<br> aCamera->Delete();<br> iren->Delete();<br> renWin->Delete();<br> aRenderer->Delete();<br> // writer->Delete();<br> // cin>>dummy;<br> return 0;<br>}<br><br><br><br></td></tr></table><br>