C++ OpenCV 3.0.0毫秒二进制掩码

C++ OpenCV 3.0.0毫秒二进制掩码,c++,opencv,matlab-cvst,mser,opencv-drawcontour,C++,Opencv,Matlab Cvst,Mser,Opencv Drawcontour,我正在尝试使用OpenCV 3.0.0测试版中的MSER算法从图像中提取文本区域。最后,我需要一个带有检测到的MSER区域的二进制掩码,但该算法只提供轮廓。我试图画出这些轮廓,但没有得到预期的结果 这是我使用的代码: void mserExtractor (const Mat& image, Mat& mserOutMask){ Ptr<MSER> mserExtractor = MSER::create(); vector<vector&l

我正在尝试使用OpenCV 3.0.0测试版中的MSER算法从图像中提取文本区域。最后,我需要一个带有检测到的MSER区域的二进制掩码,但该算法只提供轮廓。我试图画出这些轮廓,但没有得到预期的结果

这是我使用的代码:

void mserExtractor (const Mat& image, Mat& mserOutMask){
    Ptr<MSER> mserExtractor  = MSER::create();

    vector<vector<cv::Point>> mserContours;
    vector<cv::Rect> mserBbox;
    mserExtractor->detectRegions(image, mserContours, mserBbox);

    for( int i = 0; i<mserContours.size(); i++ )
    {
        drawContours(mserOutMask, mserContours, i, Scalar(255, 255, 255), 4);
    }
}
void mserExtractor(const Mat&image、Mat&mserOutMask){
Ptr mserExtractor=MSER::create();
向量mserContours;
向量mserBbox;
mserExtractor->检测区域(图像、mserContours、mserBbox);

对于(int i=0;i我找到了解决方案!只需在所有点上循环并绘制它们

void mserExtractor (const Mat& image, Mat& mserOutMask){
    Ptr<MSER> mserExtractor  = MSER::create();

    vector<vector<cv::Point>> mserContours;
    vector<KeyPoint> mserKeypoint;
    vector<cv::Rect> mserBbox;
    mserExtractor->detectRegions(image, mserContours,  mserBbox);

    for (vector<cv::Point> v : mserContours){
        for (cv::Point p : v){
            mserOutMask.at<uchar>(p.y, p.x) = 255;
        }
    }
}
void mserExtractor(const Mat&image、Mat&mserOutMask){
Ptr mserExtractor=MSER::create();
向量mserContours;
向量mserKeypoint;
向量mserBbox;
mserExtractor->检测区域(图像、mserContours、mserBbox);
对于(向量v:mserContours){
对于(cv::点p:v){
在(p.y,p.x)=255时的mse;
}
}
}