void KHalfEdgeMeshPrivate::connectEdges(KHalfEdgeMeshPrivate::HalfEdge *edge) { HalfEdge *prev = twin(cwBounds(edge)); do { prev->next = index(edge); edge = prev; prev = twin(cwBounds(edge)); } while (prev->next == 0); }
int main(int argc, char **argv){ if(argc<2){ std::cout<<"Need to specify the calibration file"<<std::endl; return 1; } Mat img1,img2; TwinCamera twin(0,1); twin.getDoubleImages(img1,img2); twin.loadCameraParameters(argv[1], img1, img2); Screen image1("Image1"); Screen image2("Image2"); Screen disp("Disparity"); StereoDepth stereoDepth; char c = 0; while(c!=27){ switch(c){ case '1': image1.putImage(img1); image2.putImage(img2); break; case '3': twin.getDoubleImages(img1,img2); twin.rectifyForStereo(img1, img2); stereoDepth.setImage1(img1); stereoDepth.setImage2(img2); if(stereoDepth.doDepth()){ disp.putImage(stereoDepth.getDisparity()); }break; } c = waitKey(10); } }
inline KHalfEdgeMeshPrivate::HalfEdgeIndex KHalfEdgeMeshPrivate::cwBoundsIndex(HalfEdgeIndex idx) const { while (twin(idx)->face != 0) { idx = cwSwivelIndex(idx); } return idx; }
inline KHalfEdgeMeshPrivate::HalfEdgeIndex KHalfEdgeMeshPrivate::cwSwivelIndex(HalfEdgeIndex const &idx) const { return twin(idx)->next; }
inline KVector3D KHalfEdgeMeshPrivate::edgeVector(HalfEdge const *he) const { return vertex(he->to)->position - vertex(twin(he)->to)->position; }
int main(){ int i,j,k,l,c; // freopen("in.txt","r",stdin); scanf("%d",&n); for(i=0;i<=2*n+60;i++) pre[i]=i; while(scanf("%d %d %d",&c,&k,&l)==3){ if(!c&&!k&&!l) break; k++; l++; k*=2; l*=2; if(c==1){ if(find(twin(k))==find(l)||find(twin(l))==find(k)) printf("-1\n"); else { Union(find(twin(k)),find(twin(l))); Union(find(l),find(k)); } } else if(c==2){ if(find(k)==find(l)||find(twin(l))==find(twin(k))) printf("-1\n"); else { Union(find(twin(k)),find(l)); Union(find(twin(l)),find(k)); } } else if(c==3){ if(find(k)==find(l)||find(twin(l))==find(twin(k))) printf("1\n"); else printf("0\n"); } else if(c==4){ if(find(twin(k))==find(l)||find(twin(l))==find(k)) printf("1\n"); else printf("0\n"); } } return 0; }
int main(int argc, char **argv){ if(argc<3){ std::cout<<"Need to specify the calibration and plane files"<<std::endl; return 1; } //reating the disparity map for the empty truck cv::Mat img1,img2, disparity; TwinCamera twin(0,1); if(argc!=5){ twin.getDoubleImages(img1,img2); }else{ img1 = cv::imread(argv[3]); img2 = cv::imread(argv[4]); } twin.loadCameraParameters(argv[1], img1, img2); StereoDepth stereoDepth; twin.rectifyForStereo(img1, img2); stereoDepth.setImage1(img1); stereoDepth.setImage2(img2); if(stereoDepth.doDepth()){ disparity = stereoDepth.getDisparity(); imwrite("left.png",img1); imwrite("right.png",img2); imwrite("diparity.png", disparity); }else{ std::cout<<"Error when computing the stereo image."<<std::endl; return 1; } //creating the computePlanes object with 5 planes to calculate pclGetPlanes computePlanes(5); pclView viewtest; pcl::PointCloud<pcl::PointXYZ>::Ptr points(new pcl::PointCloud<pcl::PointXYZ>); pcl::PointCloud<pcl::PointXYZ>::Ptr points_full; cv::Mat Q; cv::FileStorage fs(argv[1], cv::FileStorage::READ); fs["Q"] >> Q; fs.release(); cv::FileStorage fs2(argv[2], cv::FileStorage::READ); std::vector<double> left_plane; std::vector<double> right_plane; std::vector<double> top_plane; std::vector<double> bottom_plane; std::vector<double> back_plane; for(int i=0; i<4;i++){ double val; char c = (i+'a'); fs2[std::string("left_plane_").append(1u,c)] >> val; left_plane.push_back(val); fs2[std::string("right_plane_").append(1u,c)] >> val; right_plane.push_back(val); fs2[std::string("top_plane_").append(1u,c)] >> val; top_plane.push_back(val); fs2[std::string("bottom_plane_").append(1u,c)] >> val; bottom_plane.push_back(val); fs2[std::string("back_plane_").append(1u,c)] >> val; back_plane.push_back(val); } try{ computePlanes.setCoeficientsForIndex(left_plane, pclGetPlanes::LEFT_CUT); computePlanes.setCoeficientsForIndex(right_plane, pclGetPlanes::RIGHT_CUT); computePlanes.setCoeficientsForIndex(top_plane, pclGetPlanes::TOP_CUT); computePlanes.setCoeficientsForIndex(bottom_plane, pclGetPlanes::BOTTOM_CUT); computePlanes.setCoeficientsForIndex(back_plane, pclGetPlanes::BACK_CUT); }catch(std::runtime_error &exp){ std::cerr<<exp.what()<<std::endl; return 0; } points_full = viewtest.convertToPointCloudNoColor(disparity, Q); for(int i=0; i<points_full->points.size(); i++){ if( (computePlanes.isOnPlane(points_full->points[i], pclGetPlanes::LEFT_CUT)) || (computePlanes.isOnPlane(points_full->points[i], pclGetPlanes::RIGHT_CUT)) || (computePlanes.isOnPlane(points_full->points[i], pclGetPlanes::TOP_CUT)) || (computePlanes.isOnPlane(points_full->points[i], pclGetPlanes::BACK_CUT)) || (computePlanes.isOnPlane(points_full->points[i], pclGetPlanes::BOTTOM_CUT))) { continue; } points->points.push_back(points_full->points[i]); } if(points->points.size() == 0){ std::cout<<"Percentage: 0.0%"<<std::endl; } std::cout<<"Valid points: "<<points->points.size()<<std::endl; double total_occupied_volume = 0.0; pcl::PointXYZ origin; origin.x=origin.y=origin.z=0; double back_plane_distance = computePlanes.distanceFromPlane(origin, pclGetPlanes::BACK_CUT); for(int i=0; i<points->points.size(); i++){ total_occupied_volume += computePlanes.distanceFromPlane(points->points[i], pclGetPlanes::BACK_CUT)/back_plane_distance; } std::cout<<"Total occupied volume(voxels): "<<total_occupied_volume <<std::endl; std::cout<<"Total occupied volume(cm^3): "<<(430*total_occupied_volume) <<std::endl; std::cout<<"Percentage: "<<(total_occupied_volume/(640*480) *100)<<"%"<<std::endl; return 0; }
TTFD_TYPE = 0x19, RC_TYPE = 0x1A, TEMP_TYPE = 0x1B, DRVOBJ_TYPE = 0x1C, DCIOBJ_TYPE = 0x1D, SPOOL_TYPE = 0x1E, EMF_TYPE = 0x21, PEN_TYPE = 0x30, EXTPEN_TYPE = 0x50 } GdiObjectType; const DicItem Dic_GdiObjectType[] = { twin(DEF_TYPE), item(DC_TYPE, "HDC"), twin(DD_DRAW_TYPE), twin(DD_SURF_TYPE), item(RGN_TYPE, "HRGN"), item(SURF_TYPE, "HBITMAP"), twin(CLIOBJ_TYPE), item(PATH_TYPE, "HPATH"), item(PAL_TYPE, "HPALETTE"), twin(ICMCS_TYPE), item(LFONT_TYPE, "HFONT"), twin(RFONT_TYPE), twin(PFE_TYPE), twin(PFT_TYPE), twin(ICMCXT_TYPE),
// Returns true if the edge is curved (parabolic arc). // Returns false if the edge is linear (segment, ray, line). bool is_curved() const { if (!is_primary()) return false; return (cell()->contains_segment() ^ twin()->cell()->contains_segment()); }
// Returns true if the edge is linear (segment, ray, line). // Returns false if the edge is curved (parabolic arc). bool is_linear() const { if (!is_primary()) return true; return !(cell()->contains_segment() ^ twin()->cell()->contains_segment()); }