| @@ -65,33 +65,21 @@ namespace pr{ | |||
| } | |||
| cv::Mat FineMapping::FineMappingVertical(cv::Mat InputProposal,int sliceNum,int upper,int lower,int windows_size){ | |||
| cv::Mat PreInputProposal; | |||
| cv::Mat proposal; | |||
| cv::resize(InputProposal,PreInputProposal,cv::Size(FINEMAPPING_W,FINEMAPPING_H)); | |||
| // cv::imwrite("res/cache/finemapping.jpg",PreInputProposal); | |||
| if(InputProposal.channels() == 3) | |||
| cv::cvtColor(PreInputProposal,proposal,cv::COLOR_BGR2GRAY); | |||
| else | |||
| PreInputProposal.copyTo(proposal); | |||
| // proposal = PreInputProposal; | |||
| // this will improve some sen | |||
| cv::Mat kernal = cv::getStructuringElement(cv::MORPH_ELLIPSE,cv::Size(1,3)); | |||
| // cv::erode(proposal,proposal,kernal); | |||
| float diff = static_cast<float>(upper-lower); | |||
| diff/=static_cast<float>(sliceNum-1); | |||
| cv::Mat binary_adaptive; | |||
| std::vector<cv::Point> line_upper; | |||
| std::vector<cv::Point> line_lower; | |||
| int contours_nums=0; | |||
| for(int i = 0 ; i < sliceNum ; i++) | |||
| { | |||
| std::vector<std::vector<cv::Point> > contours; | |||
| @@ -116,8 +104,6 @@ namespace pr{ | |||
| } | |||
| } | |||
| } | |||
| if(contours_nums<41) | |||
| { | |||
| cv::bitwise_not(InputProposal,InputProposal); | |||
| @@ -130,14 +116,11 @@ namespace pr{ | |||
| else | |||
| proposal = bak; | |||
| int contours_nums=0; | |||
| for(int i = 0 ; i < sliceNum ; i++) | |||
| { | |||
| std::vector<std::vector<cv::Point> > contours; | |||
| float k =lower + i*diff; | |||
| cv::adaptiveThreshold(proposal,binary_adaptive,255,cv::ADAPTIVE_THRESH_MEAN_C,cv::THRESH_BINARY,windows_size,k); | |||
| // cv::imshow("image",binary_adaptive); | |||
| // cv::waitKey(0); | |||
| cv::Mat draw; | |||
| binary_adaptive.copyTo(draw); | |||
| cv::findContours(binary_adaptive,contours,cv::RETR_EXTERNAL,cv::CHAIN_APPROX_SIMPLE); | |||
| @@ -158,16 +141,9 @@ namespace pr{ | |||
| } | |||
| } | |||
| } | |||
| // std:: cout<<"contours_nums "<<contours_nums<<std::endl; | |||
| } | |||
| cv::Mat rgb; | |||
| cv::copyMakeBorder(PreInputProposal, rgb, PADDING_UP_DOWN, PADDING_UP_DOWN, 0, 0, cv::BORDER_REPLICATE); | |||
| // cv::imshow("rgb",rgb); | |||
| // cv::waitKey(0); | |||
| // | |||
| std::pair<int, int> A; | |||
| std::pair<int, int> B; | |||
| A = FitLineRansac(line_upper, -1); | |||
| @@ -178,10 +154,6 @@ namespace pr{ | |||
| int rightyA = B.second; | |||
| int cols = rgb.cols; | |||
| int rows = rgb.rows; | |||
| // pts_map1 = np.float32([[cols - 1, rightyA], [0, leftyA],[cols - 1, rightyB], [0, leftyB]]) | |||
| // pts_map2 = np.float32([[136,36],[0,36],[136,0],[0,0]]) | |||
| // mat = cv2.getPerspectiveTransform(pts_map1,pts_map2) | |||
| // image = cv2.warpPerspective(rgb,mat,(136,36),flags=cv2.INTER_CUBIC) | |||
| std::vector<cv::Point2f> corners(4); | |||
| corners[0] = cv::Point2f(cols - 1, rightyA); | |||
| corners[1] = cv::Point2f(0, leftyA); | |||
| @@ -196,10 +168,7 @@ namespace pr{ | |||
| cv::Mat quad = cv::Mat::zeros(36, 136, CV_8UC3); | |||
| cv::warpPerspective(rgb, quad, transform, quad.size()); | |||
| return quad; | |||
| } | |||
| } | |||