개발노트/OpenCV

openCV로 이미지 확인

전지적민자시점 2020. 7. 23. 13:41

2020/07/22 - [놀이터/OpenCV] - OpenCV-python

 

OpenCV-python

OpenCV는 비전 라이브러리 중 하나로 크로스플랫폼과 실시간 이미지 프로세싱에 중점을 둔 라이브러리 다양한 플랫폼을 지원 합니다. OpenCV만으로 왠만한 영상처리가 가능해졌습니다. OpenCV-python��

laheepapa.tistory.com

이미지 불러오기

기존의 구축된 환경에서 jupyther notebook을 열고, 특정 이미지 불러오기 오겠습니다

import numpy as np
import cv2

image = cv2.imread('D:/2020/test.jpg')
cv2.imshow("test", image)
cv2.waitKey(0)
cv2.destroyAllWindows()

 

위의 코드를 함수로 바꾸어 다시 작성 해보았습니다.

import numpy as np
import cv2

def showimage():
    img = cv2.imread('D:/2020/test.jpg', cv2.IMREAD_COLOR)

    cv2.imshow("test", img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

showimage()

이미지를 불러올때 옵션은 아래와 같습니다.

.IMREAD_COROR : 컬러이미지를 로드하겠., 이미지의 투명한 부분은 무시함. 정수값 1

.IMREAD_GRAYSCALE : 흑백 이미지를 로드하겠음. 정수값 0

.IMREAD_UNCHANGED : 이미지 그대로 로드 정수값 -1

 

imshow는 반환된 이미지 객체 Img를 화면에 표시하기 위한 함수 입니다.

waitkey(0)는 키보드 입력을 기다리는 시간 (단위는 s) 입니다.

 

윈도우 크기 사이즈 조절 옵션입니다. 중용한것은 타이틀 이미지와 동일 해야 합니다

cv2.namedWindow('test', cv2.WINDOW_AUTOSIZE) // 윈도우 크기 고정
//or
cv2.namedWindow('test', cv2.WINDOW_NORMAL) // 윈도우 크기 사용자 정의 

 

이미지 픽셀값 얻고 수정하기

특정 사이즈 이미지의 특정 위치에 BGR에 대한 값을 가져오기

 

import numpy as np
import cv2

img = cv2.imread('D:/2020/test.jpg')
px = img[100, 200]
print(px)

1. B,G,R 개별 바꾸는 방법

B = img.item(100, 100, 0)
G = img.item(100, 100, 0)
R = img.item(100, 100, 0)

BGR = [B,G,R]

2. (100,100)의 B(blue)값을 100으로 변경

img.itemset((100,100,0), 100) 

 

이미지 속성 얻기

import numpy as np
import cv2

img = cv2.imread('D:/2020/test.jpg')

print(img.shape) // 해상도, 컬러
print(img.size) // 사이즈 (byte)
print(img.dtype) // 데이터 타입

 

이미지 ROI 설정

이미지 처리시 이미지의 특정 영역에서 작업을 이룰때, ROI(Region of Image)는 인텍싱을 통해 얻을 수 있습니다.

import numpy as np
import cv2

img = cv2.imread('D:/2020/test.jpg')
cv2.imshow('original', img)

subimg = img[0:80, 30:280] 
cv2.imshow('subimg', subimg)

cv2.waitKey(0)
cv2.destoryAllWindows()

240*320 해상도의 사진에서 0~80 row 값과 30~280 cols 값의 위치의 이미지만 로드 하겠습니다. 세로 0~80에서 가로 30~280 위치의 이미지를 로드 합니다

 

import numpy as np
import cv2

img = cv2.imread('D:/2020/test.jpg')
cv2.imshow('original', img)
print(img.shape)

subimg = img[0:80, 30:230] 
cv2.imshow('subimg', subimg)
print(subimg.shape)

img[80:160, 10:210] = subimg // 원본에 ROT 수정본 붙이기

cv2.imshow('modified', img)

cv2.waitKey(0)
cv2.destoryAllWindows()
728x90