Python OpenCV 강좌 : 제 9강 - 자르기

Python OpenCV Slice

Python OpenCV 강좌 : 제 9강 - 자르기
[ Python-OpenCV ] - 윤대희

자르기(Slice)


1

자르기(Slice)는 영상이나 이미지에서 특정 영역을 잘라내는 연산을 의미하니다.

특정 영역을 잘라내는 것을 관심 영역(Region Of Interest, ROI)이라 하며, 이미지 상에서 관심 있는 영역을 의미합니다.

이미지를 처리할 때 객체를 탐지하거나 검출하는 영역을 명확하게 관심 영역이라 볼 수 있습니다.

관심 영역에만 알고리즘을 적용한다면, 불필요한 연산이 줄어들고 정확도가 늘어나는 효과를 얻을 수 있습니다.



Main Code (1)


import cv2

src = cv2.imread("apple.jpg", cv2.IMREAD_COLOR)
dst = src[100:600, 200:700].copy()

cv2.imshow("src", src)
cv2.imshow("dst", dst)
cv2.waitKey()
cv2.destroyAllWindows()



Detailed Code


dst = src[100:600, 200:700].copy()

OpenCV의 이미지는 이미지는 numpy 배열 형식과 동일합니다.

src 이미지에 src[높이(행), 너비(열)]관심 영역을 설정합니다.

리스트(List)배열(Array)의 특정 영역을 자르는 방식과 동일합니다.

이미지를 자르거나 복사할 때, dst = src의 형태로 사용할 경우, 얕은 복사(shallow copy)가 되어 원본도 영향을 받게 됩니다.

그러므로, *.copy()를 이용해 깊은 복사(deep copy)를 진행합니다.



Main Code (2)


import cv2

src = cv2.imread("Image/pawns.jpg", cv2.IMREAD_COLOR)

dst = src.copy() 
roi = src[100:600, 200:700]
dst[0:500, 0:500] = roi

cv2.imshow("src", src)
cv2.imshow("dst", dst)
cv2.waitKey()
cv2.destroyAllWindows()



Detailed Code


dst = src.copy() 

dst 이미지를 생성할 때, dst = src.copy()가 아닌 dst = src로 적용한다면 깊은 복사가 적용되지 않습니다.

얕은 복사로 이미지를 복사할 경우, dst 이미지와 src 이미지는 동일한 결과로 반환됩니다.



roi = src[100:600, 200:700]
dst[0:500, 0:500] = roi

roi 이미지를 생성하여 src[높이(행), 너비(열)]관심 영역을 설정합니다.

이후, dst[높이(행), 너비(열)] = roi를 이용하여 dst 이미지에 해당 영역을 붙여넣을 수 있습니다.

잘라낸 이미지와 붙여넣을 이미지의 크기가 다르다면 이미지를 붙여넣을 수 없습니다.



Result


2


3



Book Image

개정판이 출간됐습니다!

C#과 파이썬을 활용한 OpenCV 4 프로그래밍 (개정판)

컴퓨터 비전 기초 이론부터 머신러닝을 활용한 영상 처리 프로젝트까지

  • C#과 파이썬용 OpenCV의 데이터 형식과 행렬 및 배열 연산
  • 이미지/동영상/카메라를 활용한 입출력과 결과 저장
  • 전처리 과정과 정보를 탐색하기 위한 이미지 변형
  • 유의미한 정보를 검출하기 위한 이미지 변환
  • 이미지에서 정보를 검출 및 인식
  • 객체 검출을 포함한 모션 추적
  • K-means, KNN, SVM 등의 머신러닝 알고리즘 적용 방법
  • 카페(Caffe), 다크넷(Darknet), 텐서플로 모델을 활용한 딥러닝 모듈 적용 방법
  • Tesseract-OCR과 C# OpenCvSharp4를 활용한 프로젝트
  • 텐서플로와 Python OpenCV4를 활용한 프로젝트
  • 윤대희 저 | 위키북스

    [yes24 바로가기] [알라딘 바로가기] [교보문고 바로가기]

    후원하기


    ⤧  Previous post Python OpenCV 강좌 : 제 8강 - 크기 조절 ⤧  Next post Python OpenCV 강좌 : 제 10강 - 색상 공간 변환
    Python-OpenCV Category