본문 바로가기

Programing/Python

[OpenCV-기초] 기본함수+예시 연습하기

OpenCV 기본함수

 

이미지 데이터를 활용하는데 가장유용한 라이브러리인 OpenCV 활용법에 대해 알아보자 

#1. OpenCV 사용 환경생성

#2. OpenCV 명령어

#3. OpenCV 예시

※ 이하 글에서 $ 표시는 프롬프트 내에서 입력하는 명령어를 의미합니다.


#1. OpenCV 전용 환경생성

 

1. 아나콘다 설치

 

아나콘다 설치시 중간에 환경변수 경로설정에 대한 문구가 나온다면 추가 혹은 확인버튼을 눌러 설치 진행

브라우저를 통한 설치 : anaconda.org > OS 환경에 맞는 설치파일 다운로드 후 GUI 기반 설치 

프롬프트를 통한 설치 : anaconda.org > OS 환경에 맞는 설치파일 다운로드 

                              $ cd /usr/download   # 다운로드 경로 진입 

                              $ bash Anaconda3-5.0.1-Linux-x86_64.sh (or $ bash Anaconda*) 

 

※ 명령어 인식이 안될경우 설치시 환경변수 경로설정이 지정이 안되어서 운영체제가 해당 명령어 입력시 실행시킬 파일의 경로지정이 안되어서 이다.

- 환경변수 경로 확인은 '$ path' 혹은 '$ echo %PATH%'

- 환경변수 추가는 

[Windows] : $ setx path "%PATH%;[실행파일 경로]"  ex) 실행파일경로 = C:\code\python\

[Linux] : $ sudo nano ~/.bashrc > 'export PATH=/anaconda3/bin:$PATH' 추가입력

 


 

2. 아나콘다 내 환경생성 & 환경진입

 

$ conda create env -n [name]
$ conda activate [name]
(name) [경로] >

※ [name] : 생성할 환경이름 입력

[windows] $ conda create 명령어로 환경생성 후 $ conda activate 명령어로 생성한 환경에 진입한다.

[linux] 윈도우와 같은 방식으로 환경생성&환경진입 하면 되는데 만약 환경 진입이 되지 않을 경우

         $ source ~/.bashrc로 (base) 환경에 진입한 후에 conda activate [name]으로 환경에 진입한다.  

※ 환경이 생성되었는지는 아나콘다 환경 리스트 확인명령어로 확인가능하다

   : $ conda env list 

 

※ $ conda list : conda 가상환경들이 공용으로 사용가능한 패키지 리스트

※ $ pip list : OS내에 설치된 패키지

 

앞에 (환경명)이 붙지 않았을 경우 설치된 OS 자체에서 관련 파이썬을 실행하는 것이고, 환경을 생성한다는 것은 현재 OS상에 얽힌 패키지들과 무관하게 새로운 테이블에 내가 필요한 패키지들만 새로 설치된 것처럼 사용할 수 있도록 가상환경을 만들어 두는 것이다.

ex) 예를 들면 PC OS는 방이고, 내가 필요한 환경생성은 필요한 작업을 위한 독립 테이블들을 배치하는 것이다.

 

※ 설치 확인
   : $ conda --version  > 아나콘다 버전확인
    $ where conda > 아나콘다 설치경로확인

    $ python --version > 파이썬 버전확인 

    $ where python > 파이썬 설치경로확인

 


 

3. OpenCV 활용을 위한 라이브러리 설치

 

※ 주의 : OS나 가상환경 내에 여러 버전의 python이 설치되어있을경우, 패키지 설치에 pip2, pip3, conda install 의 다양한 명령어를 통해서 설치가 가능한데, 이경우 

다 떠나서 윈도우/리눅스 환경 공통적으로 사용하고자 하는 가상환경에 진입 후 

'$ pip install [package name]' 혹은 '$ conda install [package name]'으로 패키지를 설치하면된다.

conda install python3 notebook opencv-python matplotlib

필요패키지

- OpenCV : 이미지를 다루는데 특화된 라이브러리이다.

              (설치안될 시 $ conda install opencv -c conda-forge opencv-python) 

- matplotlib : 주로 수치적인 그래프를 그리는데 특화되어있는 라이브러리이다.  

기본 프롬프트상 $ pip install opencv-python : 전체 python에 대해 설치

가상환경 활성화 후 $ conda install opencv -c conda-forge opencv-python 가상환경 내에서 설치

※ $ python -m site : 현재 패키지를 설치할 시 패키지가 설치되는 위치들을 알려줌

※ conda,pip install의 역할은 필요한 패키지들간 호환이 가능한 버전을 자동으로 설정하여 설치하는 것이다.


#2. OpenCV 명령어

[이미지 파일 로딩]

 

- cv2.imread('경로') : 이미지파일 RGB 컬러로 불러오기

- cv2.imread('경로',cv2.IMREAD_GRAYSCALE) : 이미지파일 흑백으로 불러오기

- cv2.imshow('팝업명', img) : 팝업창으로 이미지 보기

- cv2.waitKey(0) : 0 - 아무 키보드 입력을 받으면 다음코드 진행, 1 -  그냥 다음코드 진행

- cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) : 컬러를 흑백으로 변환

- b,g,r=cv2.split(img) : img 파일을 r,g,b로 분리

- img=cv2.merge([r,g,b]) : 

※ OpenCV - BGR , Matplotlib - RGB

 

[ 블러링 ]

 

- cv2.blur(img,(5,5)) : 5x5 내 픽셀 평균값을 픽셀값으로 블러링

- cv2.GaussianBlur(img,(5,5),0)

  : 대상픽셀과 주변이웃 픽셀의 가중평균값으로 픽셀값 대체(대상픽셀에서 멀수록 가중치 감소),이미지내에 과도한

   경계를 자연스럽게함, 엣지정보를 손실할 수도 있는 단점을 가짐,(5,5):연산대상, 0:대상범위 지정값 활용

- cv2.medianBlur(img,5) : 5x5 영역 내 픽셀을 크기순으로 정렬 후 중간값을 픽셀값으로 사용, 엣지가 사라질수 있음

- cv2.bilateralFilter(img,9,75,75) : 엣지는 보존하면서 노이즈를 감소 시킬 수 있는 블러링

- threshold를 사용한 이진화, 임계값으로 분리
   → [],[결과이미지 저장]=cv2.threshold(img_blur,임계값(0~255),
     ex) ret,img_th=cv2.threshold(img_blur,100,230,cv2.THRESH_BINARY_INV)

- contours, hierachy = cv2.findContours(img_th,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)

 

 

 

 


#3. OpenCV 예시

 

3-1. [ 필요라이브러리 호출 ]

import cv2
import numpy as np
import matplotlib.pyplot as plt
%matplotlib

OpenCV 라이브러리 호출 ※ jupyter notebook

 

3-2. [ OpenCV 함수 활용 ]

 

#---------------------------- cv2 함수 활용 ---------------------------------# 

# 이미지 불러오기
img_color = cv2.imread('C:/code/num5_jpg.jpg') # Normal RGB Scale 
img_gray = cv2.imread('C:/code/num5_jpg.jpg', cv2.IMREAD_GRAYSCALE) # Gray Scale

# 이미지 변환 
#rgb2gray = cv2.RGB2GRAY(img_color)

# 이미지 보기
cv2.imshow('original',img_color)
cv2.imshow('gray',img_gray)

# 이미지 저장
#cv2.imwrite('C:/code/img_save.jpg',img_color)

cv2.waitKey(0) # 0 : 아무키나 기다린 후 다음코드 진행 , 1 : 그냥 다음코드 진행
cv2.destroyAllWindows() # 모든 창 닫기

OpenCV 함수활용 ※ jupyter notebook

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3-3. [ Matplotlib 함수 활용 ]

 

#---------------------- matplotlib 함수 활용 -------------------------------#
plt.imshow(img_color, cmap='gray', interpolation = 'bicubic')
plt.xticks([]) # 원하는 수치만 표기 
plt.yticks([])
plt.show()

OpenCV 대체 Matplotlib ※jupyter notebook

※ jupyter notebook TIP.  shift + tab : 함수활용 도움말