2017-07-07 19 views
1

最近,我有一個關於OpenCV MSER檢測的問題。
以下圖像中的文本未被正確提取。OpenCV MSER沒有檢測到我的文本

Image link - mser detection not work well

形態學關閉後,結果似乎是正確的。

代碼:

int main() 
{ 
    // load 
    cv::Mat sourceImage = cv::imread("F:\\Documents\\mQvnv.jpg"); 
    // convert 
    cv::Mat grayImage; 
    cv::cvtColor(sourceImage, grayImage, CV_BGR2GRAY); 
    // morph close 
    cv::Mat morphImage; 
    cv::Mat morphKernel = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(2 * 1 + 1, 1), cv::Point(-1, -1)); 
    cv::morphologyEx(grayImage, morphImage, cv::MORPH_CLOSE, morphKernel); 
    // mser 
    std::vector<std::vector<cv::Point> > contours; 
    cv::MSER ms; 
    ms(morphImage, contours); 
    // show 
    cv::Mat finalImage = sourceImage.clone(); 
    for (int idx = 0; idx < contours.size(); idx++) 
    { 
     // filter 
     cv::RotatedRect minRect = cv::minAreaRect(contours[idx]); 
     if (minRect.size.height < 4. || minRect.size.width < 4.) continue;// filter 1 

     double hwr = minRect.size.height/minRect.size.width; 
     if (hwr < 1.) hwr = minRect.size.width/minRect.size.height; 
     if (hwr > 10.) continue;// filter 2 

     double contourArea = cv::contourArea(contours[idx]); 
     double rectArea = minRect.size.area(); 
     double areaRatio = contourArea/rectArea; 
     if (areaRatio < 0.35) continue;// filter 3 

     // draw rotated rectangle 
     cv::Point2f rect_points[4]; minRect.points(rect_points); 
     for (int j = 0; j < 4; j++) 
      cv::line(finalImage, rect_points[j], rect_points[(j + 1) % 4], cv::Scalar(0, 0, 255)); 
    } 

    cv::imshow("MSER Demo", finalImage); 
    // 
    cv::waitKey(0); 
    return 0; 
} 


我很困惑。

  • MSER是否有限制/限制?
  • 它需要一些預處理?什麼樣的? 像形態學。

我也期待這種類型的文本檢測的新方法。

我很感激它,如果它可以回答。

+0

如果您提供您嘗試使用的代碼,我們也會嘗試查看結果 – sturkmen

+0

@sturkmen感謝您的回覆。之後,我試了幾天,發現這個[鏈接](https://stackoverflow.com/questions/23506105/extracting-text-opencv/23672571#23672571)。它的工作原理似乎比MSER更好。順便說一句我添加了我的代碼。 – leonmy

回答

0

您在黑色背景上有白色文字。一些MSER實現在白色背景下尋找黑色。

嘗試反轉您的圖像並再次嘗試。

+0

謝謝!好吧,我試過你說的話。不幸的是,似乎沒有改善。我使用** OpenCV 2.4.13 ** – leonmy