2011-02-13 827 views
0

我有很多圖像,周圍有厚厚的白色邊框。對我來說,刪除/隔離這些邊界最簡單的方法是什麼?無論如何,我可以使用OpenCV來做到這一點?使用opencv刪除圖像邊框

+0

發佈示例代表圖片。邊框的寬度都一樣嗎?它們是否與圖像邊界平行(僅限於垂直和水平)還是與某個角度平行?請明確點。 – misha 2011-02-13 23:51:51

回答

0

不是一個非常優雅的解決方案,但這是我的第一次嘗試。

  if(direction == BORDER_SEARCH_DIRECTION.TOP || 
      direction == BORDER_SEARCH_DIRECTION.BOTTOM) 
     { 
      for (int y = startY; y >= 0 && y < _image.Height; y += deltaY) 
      { 
       bool foundNonWhite = false; 
       for (int x = startX; x < _image.Width; x += deltaX) 
       { 
        if (Convert.ToInt32(_image.ManagedArray.GetValue(y, x, 0)) < BORDER_WHITENESS_THRESHOLD) 
        { 
         foundNonWhite = true; 
         break; 
        } 
       } 
       if (!foundNonWhite) 
       { 
        borderAt = y; 
        break; 
       } 
      } 
     } 

基本上,這是假定的邊界將在最開始的方式五分之一到從頂部/底部的形象,它搜索的第一行完全是「白」。我運行例程兩次,如果我在圖像的頂部和底部發現整行白色,我認爲我們有一個邊框。

該死的事情需要250毫秒。

0

一種方法是使用四叉樹分解,使邊界區域是一個「葉」節點。然後你可以減去它。