void HoughDetectEdge::detect(cv::Mat &image, std::vector<cv::Vec4i> &edges) { edges.clear(); cv::Mat gray; if (image.channels() == 3) { cv::cvtColor(image, gray, CV_BGR2GRAY); } else { gray = image.clone(); } canndyImage(gray); std::vector<std::vector<cv::Vec4i>> lines; houghLines(gray, lines); if (lines.size() != 4) return; mergeLines(lines, edges); }
void Preprocessor::addMacros() { auto it = lines.begin(); while(it != lines.end()) { if(it->length() > 0 && it->at(0) == '#') { trim(*it); mergeLines(it); size_t size = lines.size(); size_t pos = std::distance(lines.begin(), it); addMacro(it); it = lines.erase(lines.begin() + pos + lines.size() - size); } else ++it; } }