Home>

### python - i want to take 4 edges from the edge image

I would like to take the four points at the end of the black line on the shogi board.
Original image (Fig. 1)Grayscale and canny edge from to output the image and it seems to work (Fig. 2)However, even if I do a Hough transform after that, the line is not drawn just right. How can I get 4 points at the end? If i have any policy, please let me know. Any answer will be helpful, so thank you.

``````import cv2
import numpy as np
kernel = np.ones ((2, 2), np.uint8)
gray = cv2.cvtColor (img, cv2.COLOR_BGR2GRAY)
edges = cv2.Canny (gray, 1, 100, apertureSize = 3)
cv2.imwrite ('houghlines6_edge.jpg', edges)
lines = cv2.HoughLines (edges, 1, np.pi/180, 200)
for line in lines:
rho, theta = line [0]
a = np.cos (theta)
b = np.sin (theta)
x0 = a * rho
y0 = b * rho
x1 = int (x0 + 1000 * (-b))
y1 = int (y0 + 1000 * (a))
x2 = int (x0 --1000 * (-b))
y2 = int (y0 --1000 * (a))
cv2.line (img, (x1, y1), (x2, y2), (0, 0, 255), 2)
cv2.imwrite ('houghlines3.jpg', img)``````

Isn't it easier to detect the line by Hough transform if the line is thickened by the expansion process (deliate)?

If the Hough transform doesn't work,
(1) After expansion processing, find contour is detected by findContours.
(2) Probably the quadrangle you want to detect has the largest area, so calculate the area with the contourArea and detect only the largest one.
③ Detect the coordinates of the four corners with the idea below
・ Lower left: Extract the point with the smallest x coordinate
・ Lower right: Extract the point with the largest x coordinate
・ Upper left: In order to extract the point closest to the upper left, extract the largest point on the coordinate axis rotated by 135 °.
・ Upper right: In order to extract the point closest to the upper right, extract the largest point on the coordinate axis rotated by 45 °.

The link below also detects the points at the four corners of the tennis court.
[Sports image analysis 4 using OpenCV (motion tracking)] Automatic detection of tennis court lines