如何消除數獨方塊中的凸性缺陷?

| | | | | | | | | |

我正在做一個有趣的項目:使用 OpenCV(如在 Google 護目鏡等中)從輸入圖像中求解數獨。而且我已經完成了任務,但是最後我發現了一個小問題,我來這裡。

我使用OpenCV 2.3.1的Python API進行了編程。

下面是我所做的:

  1. 閱讀圖像
  2. 找到輪廓
  3. 選擇面積最大的那個,(也有點相當於正方形) .
  4. 找到角點。

    如下所示:

    enter image description here

    (注意這裡的綠線正確地與數獨的真實邊界重合,所以數獨可以正確變形

    strong>. 檢查下一張圖片)

  5. 將圖片扭曲成一個完美的正方形

    例如圖片:

    enter image description here

  6. 執行OCR(為此我使用了我的方法在 簡單數字識別中給出OpenCV-Python 中的 OCR 方法 )

而且方法效果很好。

問題:

查看這張圖片。

在此圖像上執行第 4 步會得到以下結果:

enter image description here

畫出的紅線是原始輪廓,是數獨邊界的真實輪廓。

畫出的綠線是近似輪廓,將是扭曲圖像的輪廓。

當然,數獨上邊緣的綠線和紅線是有區別的。所以在變形時,我沒有得到數獨的原始邊界。

我的問題:

如何在正確的邊界上變形圖像數獨,即紅線或如何消除紅線和綠線之間的差異? OpenCV中有什麼方法嗎?