OpenCV에서 zero-padding을 한 줄로 만드는 방법

없는 지방원생의 sota입니다.
초보자이므로 실수가 많이 있다고 생각합니다만, 그 때는 코멘트로 가르쳐 주실 수 있으면 다행입니다.

연구나 바이트로 자주 패딩을 구현합니다만, 매회 pillow나 opencv등에서 어떻게 하는지를 조사해, 한시간 가까이 구현에 사용하고 있었습니다만, 타이틀에도 있듯이 opencv로 1행으로 구현할 수 있는 것이 알았으므로 비망록으로 남깁니다.

cv2.copyMakeBorder()



구체적으로는 cv2.copyMakeBorder() 를 사용합니다.
사용법은
output = cv2.copyMakeBorder(src, top, bottom, left, right, borderType, value)

입니다.
- src 입력 이미지
- top, bottom, left, right 는 각각 이미지의 상하 좌우에 몇 픽셀 공백을 더하는지
- borderType 는 추가할 경계의 종류를 지정하기 위한 플래그로, 소위 padding을 하고 싶은 경우, cv2.BORDER_CONSTANT 를 선택해 주세요.
- 그 밖에도 cv2.BORDER_REFLECT, cv2.BORDER_DEFAULT, cv2.BORDER_REPLICATE, cv2.BORDER_WRAP 등이 있습니다만, 조금 패딩과는 다르기 때문에, 이것들은 공식 문서를 참고로 해 주세요.
htp://bs. 그래 cs. 푹 빠져. 아 c. jp/sd/메 m r/오야마타/오펜 CV/html/py_개별 ls/py_이/py_바시 c_오 ps/py_바시 c_오 ps. HTML
- value 는 padding한 부분의 색을 지정합니다. (0,0,0) 그렇다면 검정, (255,255,255) 그렇다면 흰색과 같은 상태입니다.

구현 예



import cv2

img = cv2.imread('./fig.png')

img_pad = cv2.copyMakeBorder(img, 50, 50, 50, 50, cv2.BORDER_CONSTANT, (0,0,0))

cv2.imwrite('./fig_pad.png', img_pad)



무사히 패딩되어 있습니다.
지금까지 검은 이미지를 만들어 슬라이스로 장소를 매회 생각하면서 붙여 넣은 수고를 생각하면, 놀랍도록 간단하게 할 수 있었습니다.
앞으로 opencv에서이 방법으로 패딩 할 것입니다.

좋은 웹페이지 즐겨찾기