[OpenCV-python 기초]:이미지 픽셀 조작 및 ROI(관심영역)
2018. 5. 30. 14:41ㆍPython-이론/python-opencv
OpenCV:이미지 픽셀 조작 및 ROI(관심영역)
roi(관심영역)이란 자기가 지금 작업하려는 특정구역을 뜻합니다.
한구역의 픽셀값 얻어오기
import cv2 img = cv2.imread('images/ironMan.PNG') print(img[155,15])
위의 픽셀값을 img[155,15] = [0,0,0]의 형태로 변형가능하다. 하지만 이같은 방법은 성능상에서 문제를 발생시킬 수 있다. 그래서 우리는 img.item을 사용하겠다
import cv2 img = cv2.imread('images/ironMan.PNG') #첫인자 두번째인자는 픽셀값 세번째 인자는 0 파란색, 1 초록색, 2 빨간색 #img.itemset((120,150,0), 100) B = img.item(120,150,0) G = img.item(120, 150, 1) R = img.item(120, 150, 2) RGB = [R,G,B] print(RGB)
이미지 속성 얻기
import cv2 img = cv2.imread('images/ironMan.PNG') #첫인자 두번째인자는 픽셀값 세번째 인자는 0 파란색, 1 초록색, 2 빨간색 print('이미지 height:',img.shape[0], '이미지 width:',img.shape[1],'이미지 channel수:',img.shape[2]) print(img.size) #byte print(img.dtype)#이미지 데이터 타입
ROI 지정하고 이미지 변형시키기
import cv2 img = cv2.imread('images/ironMan.PNG') cuttingImg = img[100:400, 100:400] cv2.imshow('original', img) cv2.imshow('cuttingImg', cuttingImg) img[0:300,0:300] = splitImg cv2.imshow('modified', img) cv2.waitKey(0) cv2.destroyAllWindows()
이미지 채널합치기
import cv2 import numpy import cv2 img = cv2.imread('images/ironMan.PNG') #분리하기 B, G, R = cv2.split(img) cv2.imshow('B', B) #파란색만 적용 cv2.imshow('G', G) #초록색만 적용 cv2.imshow('R', R) #빨간색만 적용 #합치기 BGR = cv2.merge((B, G, R)) cv2.imshow('merge',BGR) cv2.waitKey(0) cv2.destroyAllWindows()
이미지를 분리하는데 split을 사용했지만 성능상에서 좋지 못하다. 따라서 아래의 방법을 사용해서 구분하는 것이 좋다.
import cv2 img = cv2.imread('images/ironMan.PNG') #분리하기 B = img[:,:,0] G = img[:,:,1] R = img[:,:,2]
'Python-이론 > python-opencv' 카테고리의 다른 글
[OpenCv-python 사용법] global Threshold (0) | 2018.06.06 |
---|---|
[OpenCv-python 기초 사용법] 이미지 연산처리를 통해 합성하기 (2) | 2018.05.31 |
[OpenCv-python 기초 ]:trackBar 생성하기 (0) | 2018.05.30 |
[OpenCv-python 기초 : 마우스 클릭으로 도형 만들기 (0) | 2018.05.30 |
[OpenCv-python 기초] :도형그리기 (0) | 2018.05.29 |