이미지 기본 연산 다루기
1. 목표
- 특정 픽셀에 접근해서 값을 바꿔봅시다
- 이미지 속성에 접근해 보겠습니다.
- 이미지 영역 Region Of Interest(ROI)을 설정해봅시다
- 이미지를 나누거나 병합해봅시다.
이번에 학습할 연산들은 opencv보다 넘파이와 관련이 많습니다. 또, opnecv로 최적화된 코드를 작성하기 위해서는 넘파이에 대해 깊이 이해하는게 필요합니다.
2. 특정 픽셀에 접근해서 값을 바꾸기
import cv2
import numpy as np
img = cv2.imread('/Users/jdo/git/python_vision/01day/kimheungkook.jpg',cv2.IMREAD_COLOR)
px = img[100, 100]
# bgr 색상모델 값을 출력해줍니다.
print(px)
# 파랑색 요소만 접근해서 출력해봅시다.
blue = img[100, 100, 0]
print (blue)
# 동일한 방법으로 픽셀 값을 바꿀수도 있습니다.
img[100, 100] = [255, 255, 255]
print(img[100, 100])
cv2.imshow("iamge", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
파일명 : 01_pixel.py
- 이미지를 우선 로드하고
- 한 픽셀을 y, x 좌표계로 접근해 봅시다.
- BGR 이미지로 로드한 경우 파랑, 녹색, 빨강 값으로 이루어진 배열이 반환될겁니다.
- 흑백 영상의 경우에는 명암 강도 하나만 반환 됩니다.
- '나' 사이에 흰 점이 보이죠?
# img[100,100] = [255, 255, 255]
2. 이미지 속성 접근하기
이미지 속성으로는 행과 열, 채널의 수(shape), 이미지 데이터 타입(dtype), 픽셀의 갯수(size) 등이 있습니다.
각 요소에는 아래의 코드로 접근 가능 합니다.
import cv2
import numpy as np
img = cv2.imread('/Users/jdo/git/python_vision/01day/kimheungkook.jpg',cv2.IMREAD_COLOR)
print(img.shape)
print(img.size)
print(img.dtype)
파일명 : 02_property.py
3. 이미지 관심영역 Image ROI
이미지의 특정 영역을 다루고 싶은 경우도 있습니다. 영상에서 눈 검출을 하는 경우 얼굴을 찾을떄까지 영상 전체에서 얼굴 검출을 수행하게 되는데요. 얼굴을 찾고나면 눈의 위치 찾기를 시작합니다. 얼굴위에는 항상 눈이 있으니까 이 방법으로 정확성을, 작은 영역을 찾으므로 성능을 개선시킬수가 있습니다.
ROI는 넘파이 인덱싱을 사용해서 얻을수 있는데요. 다음과 같이 이미지를 변경시킬수도 있습니다.
import cv2
import numpy as np
img = cv2.imread('/Users/jdo/git/python_vision/01day/kimheungkook.jpg',cv2.IMREAD_COLOR)
# y x좌표
name = img[55:85, 30: 150]
img[200:230, 200:320] = name
img[340:370, 200:320] = name
cv2.imshow("iamge", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
파일명 : 03_roi.py
- 원본 영상에서 이름 영역 (y,x 좌표상) 55:85(y), 30 : 150(x)의 값들을 name 변수에 담아 지정한 좌표에 담아줬더니
- 이름이 복사된 결과를 학인할 수 있습니다.
'로봇 > 영상' 카테고리의 다른 글
opencv-python 튜토리얼 - 9. 이미지 이진화 (0) | 2020.08.14 |
---|---|
opencv-python 튜토리얼 - 8. 이미지 기하학적 변환 (0) | 2020.08.13 |
opencv-python 튜토리얼 - 6. 트랙바를 컬러 팔레트로 사용해보기 (0) | 2020.08.10 |
opencv-python 튜토리얼 - 5. 마우스를 패인트 브러쉬로 사용하기 (0) | 2020.08.10 |
opencv-python 튜토리얼 - 4. 그리기 함수 사용하기 (0) | 2020.08.10 |