//显示函数 void CResultThread::OnShwo_Pair_ThreadMessage(WPARAM wParam, LPARAM lParam) { //cout << "OnShwo_Pair_ThreadMessage" << endl; //return; static IplImage *OUTImage = cvCreateImage(cvSize(640 * 2, 480), IPL_DEPTH_8U, 1); //static bool ONCE = true; //if (ONCE) //{ // cvSetZero(OUTImage); // cvLine(OUTImage, cvPoint(640, 0), cvPoint(640, 480), cvScalar(150)); //} ////画点就好,画线很费时间 //for (int i = 0; i < NumOfPairCounter; i++) //{ // OUTImage->imageData[640 * 2 * (int)(PairCounter[i].Left->y) + int(PairCounter[i].Left->x)] = -127; // OUTImage->imageData[640 * 2 * (int)(PairCounter[i].Right->y) + 640 + int(PairCounter[i].Right->x)] = -127; //} //cvShowImage("配对线", OUTImage); //cvWaitKey(2); ////用这个清零比较快 cvSetZero(OUTImage); //for (int i = 0; i < NumOfPairCounter; i++) //{ // OUTImage->imageData[640 * 2 * (int)(PairCounter[i].Left->y) + int(PairCounter[i].Left->x)] = 0; // OUTImage->imageData[640 * 2 * (int)(PairCounter[i].Right->y) + 640 + int(PairCounter[i].Right->x)] = 0; //} CompareImage(Src_Left_Gray[int(wParam)], Src_Right_Gray[int(lParam)], OUTImage); cvShowImage("配对线", OUTImage); cvWaitKey(2); }
//显示函数 void CResultThread::OnShwo_Pair_ThreadMessage(WPARAM wParam, LPARAM lParam) { double StartTime = GETTIME(); static IplImage *OUTImage = cvCreateImage(cvSize(640 * 2, 480), IPL_DEPTH_8U, 1); CompareImage(Src_Left_Gray[int(wParam)], Src_Right_Gray[int(lParam)], OUTImage); //画配对线 for (int i = 0; i < NumOfPairCounter; i++) { cvLine(OUTImage, cvPoint((int)PairCounter[i].Left->x, (int)PairCounter[i].Left->y), cvPoint((int)PairCounter[i].Right->x + 640, (int)PairCounter[i].Right->y), cvScalar(150)); } cvShowImage("配对线", OUTImage); double Endtime = GETTIME(); if (Endtime - StartTime > 10) { cout << "显示配对耗时" << Endtime - StartTime << endl; } }
//---------------------------------------------------------------------------- void medPipeVectorFieldSliceTest::TestCreate() //---------------------------------------------------------------------------- { mafVMEStorage *storage = mafVMEStorage::New(); storage->GetRoot()->SetName("root"); storage->GetRoot()->Initialize(); ///////////////// render stuff ///////////////////////// vtkRenderer *frontRenderer; vtkNEW(frontRenderer); frontRenderer->SetBackground(0.1, 0.1, 0.1); vtkCamera *cam = frontRenderer->GetActiveCamera(); m_RenderWindow = vtkRenderWindow::New(); m_RenderWindow->AddRenderer(frontRenderer); m_RenderWindow->SetSize(640, 480); m_RenderWindow->SetPosition(200,0); vtkRenderWindowInteractor *renderWindowInteractor = vtkRenderWindowInteractor::New(); renderWindowInteractor->SetRenderWindow(m_RenderWindow); ////////////////////////////////////////////////////////////////////////// mafVMEVolumeGray *volume; mafNEW(volume); volume->ReparentTo(storage->GetRoot()); vtkMAFSmartPointer<vtkFloatArray> scalarArray; scalarArray->SetName("Scalar"); vtkMAFSmartPointer<vtkFloatArray> vectorArray; vectorArray->SetNumberOfComponents(3); vectorArray->SetName("velocity"); vtkMAFSmartPointer<vtkFloatArray> tensorArray; tensorArray->SetNumberOfComponents(9); tensorArray->SetName("tensor"); int x,y,z; x = y = z = 10; vtkMAFSmartPointer<vtkStructuredPoints> image; double origin[3] = {0.0,0.0, -45.}; image->SetOrigin(origin); image->SetDimensions(x,y,z); image->SetSpacing(10.,10.,10.); int i = 0, size = x*y*z; for(;i<size;i++){ scalarArray->InsertNextTuple1(1.0); vectorArray->InsertNextTuple3((float)rand()/(float)RAND_MAX, (float)rand()/(float)RAND_MAX, (float)rand()/(float)RAND_MAX); tensorArray->InsertNextTuple9((float)rand()/(float)RAND_MAX,(float)rand()/(float)RAND_MAX,(float)rand()/(float)RAND_MAX,(float)rand()/(float)RAND_MAX,(float)rand()/(float)RAND_MAX,(float)rand()/(float)RAND_MAX,(float)rand()/(float)RAND_MAX,(float)rand()/(float)RAND_MAX,(float)rand()/(float)RAND_MAX); } image->GetPointData()->AddArray(vectorArray); image->GetPointData()->AddArray(tensorArray); image->GetPointData()->SetScalars(scalarArray); image->GetPointData()->GetVectors("velocity")->Modified(); image->GetPointData()->Update(); image->GetPointData()->SetActiveVectors("velocity"); image->Update(); double bb[6]; image->GetBounds(bb); volume->SetDataByReference(image, 0.); volume->Update(); //Assembly will be create when instancing mafSceneNode mafSceneNode *rootscenenode = new mafSceneNode(NULL, NULL, storage->GetRoot(), NULL, NULL); mafSceneNode *sceneNode = new mafSceneNode(NULL,rootscenenode,volume, frontRenderer); /////////// Pipe Instance and Creation /////////// medPipeVectorFieldSlice *pipe = new medPipeVectorFieldSlice; pipe->Create(sceneNode); double focalPoint[3] = {45.,45.,0.}; double position[3] = {45.,45.,100.}; cam->SetFocalPoint(focalPoint); cam->SetPosition(position); ////////// ACTORS List /////////////// vtkProp3DCollection *actorList = pipe->GetAssemblyFront()->GetParts(); actorList->InitTraversal(); vtkProp *actor = actorList->GetNextProp(); while(actor) { frontRenderer->AddActor(actor); m_RenderWindow->Render(); actor = actorList->GetNextProp(); } //m_RenderWindow->Render(); //mafSleep(2000); CompareImage(); delete pipe; sceneNode->m_RenFront = NULL; delete sceneNode; delete(rootscenenode); volume->ReparentTo(NULL); mafDEL(volume); mafDEL(storage); vtkDEL(frontRenderer); vtkDEL(m_RenderWindow); vtkDEL(renderWindowInteractor); }
//---------------------------------------------------------------------------- void medPipeVectorFieldGlyphsTest::TestCreate() //---------------------------------------------------------------------------- { mafVMEStorage *storage = mafVMEStorage::New(); storage->GetRoot()->SetName("root"); storage->GetRoot()->Initialize(); ///////////////// render stuff ///////////////////////// vtkRenderer *frontRenderer; vtkNEW(frontRenderer); frontRenderer->SetBackground(0.1, 0.1, 0.1); m_RenderWindow = vtkRenderWindow::New(); m_RenderWindow->AddRenderer(frontRenderer); m_RenderWindow->SetSize(640, 480); m_RenderWindow->SetPosition(200,0); vtkRenderWindowInteractor *renderWindowInteractor = vtkRenderWindowInteractor::New(); renderWindowInteractor->SetRenderWindow(m_RenderWindow); ////////////////////////////////////////////////////////////////////////// mafVMEVolumeGray *testVolume; mafNEW(testVolume); testVolume->ReparentTo(storage->GetRoot()); int volumeDimensions[3]; volumeDimensions[0] = 5; volumeDimensions[1] = 5; volumeDimensions[2] = 5; vtkMAFSmartPointer<vtkImageData> imageData; imageData->SetDimensions(volumeDimensions[0],volumeDimensions[1],volumeDimensions[2]); imageData->SetSpacing(1.,1.,1.); vtkMAFSmartPointer<vtkFloatArray> scalarArray; scalarArray->SetNumberOfComponents(1); scalarArray->SetName("Scalar"); vtkMAFSmartPointer<vtkFloatArray> vectorArray; vectorArray->SetNumberOfComponents(3); vectorArray->SetNumberOfTuples(volumeDimensions[0]*volumeDimensions[1]*volumeDimensions[2]); vectorArray->SetName("Vector"); for(int i=0;i< volumeDimensions[0]*volumeDimensions[1]*volumeDimensions[2];i++) { scalarArray->InsertNextTuple1(i%3); vectorArray->SetTuple3(i, i, i, i); } imageData->GetPointData()->SetScalars(scalarArray); imageData->GetPointData()->SetActiveScalars("Scalar"); testVolume->SetData(imageData, 0.); testVolume->Update(); mafVMEOutput *output = testVolume->GetOutput(); output->Update(); vtkPointData *pointData = output->GetVTKData()->GetPointData(); pointData->Update(); pointData->AddArray(vectorArray); pointData->SetActiveVectors("Vector"); //Assembly will be create when instancing mafSceneNode mafSceneNode *rootscenenode = new mafSceneNode(NULL, NULL, storage->GetRoot(), NULL, NULL); mafSceneNode *sceneNode = new mafSceneNode(NULL,rootscenenode,testVolume, frontRenderer); /////////// Pipe Instance and Creation /////////// medPipeVectorFieldGlyphs *pipe = new medPipeVectorFieldGlyphs; pipe->Create(sceneNode); pipe->m_RenFront = frontRenderer; vtkPropCollection *actorList = vtkPropCollection::New(); pipe->GetAssemblyFront()->GetActors(actorList); actorList->InitTraversal(); vtkProp *actor = actorList->GetNextProp(); while(actor) { frontRenderer->AddActor(actor); m_RenderWindow->Render(); actor = actorList->GetNextProp(); } m_RenderWindow->Render(); mafSleep(2000); CompareImage(); vtkDEL(actorList); pipe->Delete(); sceneNode->m_RenFront = NULL; delete sceneNode; delete(rootscenenode); vtkDEL(renderWindowInteractor); vtkDEL(m_RenderWindow); vtkDEL(frontRenderer); testVolume->ReparentTo(NULL); mafDEL(testVolume); mafDEL(storage); }