티스토리 뷰

📦 개발/opencv

[opencv] 보드판 생성

홓옇 2023. 1. 31. 22:40

1. 보드판 생성

8 * 8 보드판을 만들기 위해 배열을 생성한다.

board = []
for i in range(8):
    boardTemp = []
    for j in range(8):
        boardTemp.append(0)
    board.append(boardTemp)

2. 기본 돌 세팅

othello 게임을 보면 기본 세팅이 되어있는 상태로 나온다.

halfWidth = int(len(board) / 2) - 1
halfHeight = int(len(board[0]) / 2) - 1

board[halfWidth][halfHeight] = 1
board[halfWidth][halfHeight+1] = 2
board[halfWidth+1][halfHeight] = 2
board[halfWidth+1][halfHeight+1] = 1

3. 방해물 인식

방해물을 어떻게 인식할 것인가 고민하다 특정위치에 픽셀값으로 판단하기로 생각했다.

이미지를 받아와 이미지의 크기를 저장한다.

image = cv2.imread('./images/cropped/cropImg_1.jpg', cv2.IMREAD_COLOR)
height, width, channel = image.shape
cv2.imshow('image', image)
cv2.waitKey(0)

8*8 보드판에서 한칸의 간격을 계산하기 위해 높이, 너비를 8로 나누어줬다.

cellWidth = int(width / 8)
cellHeight = int(height / 8)

opencv python에서 이미지의 개별 픽셀을 접근하여 값을 읽어오는 방법으로 item을 사용할 수 있다.

opencv에서는 이미지를 numpy 배열로 저장하기 때문에 y축, x축 순으로 접근한다.
img.item(y, x, color)로 해당 픽셀의 값을 가져올 수 있다.

color = 0: blue
color = 1: green
color = 2: red

해당 픽셀에서의 색깔조합이 다르면 (방해물이라면) 해당 보드판을 -1로 바꾸어준다.

xIndex = 0
yIndex = 0
for y in range(int(cellHeight / 2), height, cellHeight):
    for x in range(int(cellWidth / 2), width, cellWidth):
        b = image.item(y, x, 0)
        g = image.item(y, x, 1)
        r = image.item(y, x, 2)

        gray = (int(b) + int(g) + int(r)) / 3.0

        if(gray <= 60):
            board[xIndex][yIndex] = -1
        yIndex += 1  
    xIndex += 1
    yIndex = 0

결과화면

image board

 

참고자료

https://webnautes.tistory.com/796

 

OpenCV Python 강좌 - 이미지 픽셀에 접근하는 방법

OpenCV Python에서 이미지의 개별 픽셀에 접근하여 값을 읽어오거나 변경하는 방법을 다루고 있습니다. 마지막 업데이트 - 2018. 9. 13 다음 OpenCV Python 튜토리얼을 참고하여 강좌를 비정기적로 포스팅

webnautes.tistory.com

https://m.blog.naver.com/PostView.nhn?blogId=samsjang&logNo=220502203203&proxyReferer=https:%2F%2Fwww.google.com%2F 

 

[07편] 이미지 픽셀 조작 및 ROI 조작

이미지 프로세싱 & 컴퓨터 비전 OpenCV-Python 강좌 7편 : 이미지 픽셀 조작 및 ROI 조작 ...

blog.naver.com

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함