代码排版

来源:互联网 发布:doge 动态软件 编辑:程序博客网 时间:2024/05/01 20:35
class StereoPlotTest : public IKeyHandler{private:Flag close;Flag pause;Flag gray;private:    Bool supportOnKey() {return TRUE;}void onKey(String port, Key key){switch (key){case K_Esc:close.set();break;case K_P:if (pause.check()) pause.reset();else pause.set();break;case K_G:if (gray.check()) gray.reset();else gray.set();break;default:break;}}public:void runWithID(Image frameL,Image frameR){Log log(moduleName, "Program.run");        // offsets to make things moveFloat pointOffset = 0.0f;        // initialize view point controllerPoint3D position = Point3D(0.0f, 12.f, 12.0f);// a 175cm manViewPointController controller(ViewPoint(position, RotateAngles(), 75.0f));controller.setDefaultKeyHandler(this);        controller.setSensitivity(3);        // initialize plotterStereoPlot plot;plot.setAntiAliasing(0);// main loopTimer offsetTimer;UInt imageCount = 0;Image image, imageInfo;Float HRadius =2.0f ,WRadius = 5.0f;Module3D BufObject;PointsArray ArrayPlot=BufObject.ArrayWithIndex(frameL,frameR,HRadius,WRadius);Array<Point3DIndexType> HNode = ArrayPlot.Harris;Array<Point3DIndexType> WNodeMin  = ArrayPlot.WaterMin;Array<Point3DIndexType> WNodeMax = ArrayPlot.WaterMax;UInt line_num = HNode.size();Image frame1;frame1.copy(frameL);TrianglePlot TriangleC=BufObject.TriangleArray(frameL,frameR,HRadius,WRadius);        // create windowsWindow window;window.setKeyHandler(&controller);window.create("3D Plot");while (!close.check()){// set the view pointplot.setViewPoint(controller.viewPoint());if (!pause.check()){// plot points//show the waternodeArray<Point3D>  WaterNode(WNodeMin.size());for (UInt i = 0; i < WNodeMin.size(); i++){WaterNode[i] = WNodeMin[i].Coordi3D;}plot.plotPoints("watershed min node", WaterNode, ColorRGB(0,0,255), 0.01f);Array<Point3D>  WaterNodemax(WNodeMax.size());for (UInt i = 0; i < WNodeMax.size(); i++){WaterNodemax[i] = WNodeMax[i].Coordi3D;}plot.plotPoints("watershed  max node", WaterNodemax, ColorRGB(255,0,0), 0.01f);Array<Point3D>  HarrisNode(HNode.size());for (UInt i = 0; i < HNode.size(); i++){HarrisNode[i] = HNode[i].Coordi3D;}plot.plotPoints("harris node", HarrisNode, ColorRGB(0,255,0), 0.01f);Array<Line3D> lines(line_num);UInt linesCount = 0;for ( UInt l = 0,i = 0; i < WNodeMin.size(); i++){for (UInt k = 0;k < HNode.size(); k++){if( HNode[k].Coordi3D.x >0 &&HNode[k].MinIndex > 0 && WNodeMin[i].MinIndex == HNode[k].MinIndex){lines[l].p1 = WNodeMin[i].Coordi3D;lines[l].p2 = HNode[k].Coordi3D;l++;linesCount++;}}}plot.plotLines("spiral",lines, ColorRGB(0,0,255), 0.01f);Array<Line3D> linesmax(line_num);for ( UInt l = 0,i = 0; i < WNodeMax.size(); i++){for (UInt k = 0;k < HNode.size(); k++){if( HNode[k].Coordi3D.x >0 &&HNode[k].MaxIndex > 0 && WNodeMax[i].MaxIndex == HNode[k].MaxIndex){linesmax[l].p1 = WNodeMax[i].Coordi3D;linesmax[l].p2 = HNode[k].Coordi3D;l++;//console::print("here");//waitKey();}}}plot.plotLines("spiral max",linesmax, ColorRGB(0,255,0), 0.01f);plot.plotTextures("min",TriangleC.TriMin3D,TriangleC.TriMin2D,frame1);plot.plotTextures("max",TriangleC.TriMax3D,TriangleC.TriMax2D,frame1);}// query the rendered framewhile (!plot.getImageFrame(image, imageCount)) thread::waitTime(1);// show the frameif (gray.check()){Image imageGray;image.convertTo(imageGray, PF_ByteGray);window.writeImageFrame(imageGray);}else window.writeImageFrame(image);// update offsets and wait timeFloat offsetTime = offsetTimer.check();offsetTimer.start();if (!pause.check()){pointOffset += 0.01f * offsetTime;}thread::waitTime(1);}}