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);
}
示例#2
0
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;
    }
}