2

我是使用 Python 和 OpenCV 编写计算机视觉程序的新手。我需要在这个谜题中检测网格的大小。每个网格都是正方形或长方形,尺寸从 5x5 到 27x36。我需要从这张图片中提取每个正方形。这张照片来自截图,主要是我会用我的手机拍照。到目前为止我做过的事情:

转换为灰度,然后转换为高斯模糊以去除相机照片中的噪点。然后我应用了自适应阈值。之后,我找到了轮廓并将其变形为矩形。我在 OpenCV 中尝试了霍夫线算法,但它确实给了我非常糟糕的结果。

我应该采取哪些步骤?谢谢

http://i.imgur.com/slUj099.jpg

gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
gaussian = cv2.GaussianBlur(gray,(3,3),0)
thresh = cv2.adaptiveThreshold(gaussian,255,0,1,13,4)
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

area = gray.size
for i in contours:
    if cv2.contourArea(i)> area/8:
        peri = cv2.arcLength(i,True)
        approx = cv2.approxPolyDP(i,0.02*peri,True)
        cv2.drawContours(img,[approx],0,(0,255,0),2,cv2.CV_AA) 
        break 
4

0 回答 0