상세 컨텐츠

본문 제목

Open CV - 기초 사용법

Open CV

by 소사탕 2021. 2. 17. 21:05

본문

728x90
반응형

import glob

 

img_files = glob.glob('.\\images\\*.jpg')

 

 

>> glob 은 images 폴더안에 jpg 로 되어있는 모든 파일을 가져온다

# 무한 루프
cnt = len(img_files)
idx = 0

while True:
    img = cv2.imread(img_files[idx])  #폴더에 있는 이미지를 인덱스로 읽는다

    if img is None:    #만약 폴더가 없다면 or 아니라면
        print('Image load failed!')
        break

    cv2.imshow('image', img)   #사진을 보여준다
    if cv2.waitKey(1000) >= 0:   #1초 기다린다 and 입력받은키가 있다면 
        break

    idx += 1					 #사진의 인덱스 증가 
    if idx >= cnt:
        idx = 0

cv2.destroyAllWindows()

영상의 속성과 픽셀

 

출처 : 패스트 캠퍼스 

OpenCV 영상 데이터 자료형과 NumPy 자료형

 

• 그레이스케일 영상: cv2.CV_8UC1 → numpy.uint8, shape = (h, w)
• 컬러 영상: cv2.CV_8UC3 → numpy.uint8, shape = (h, w, 3)

 

 

선 그리기 

import numpy as np
import cv2

img = np.full((400, 400, 3), 255, np.uint8)

cv2.line(img, (50, 50), (200, 50), (0, 0, 255), 5)
cv2.line(img, (50, 60), (150, 160), (0, 0, 128))

cv2.rectangle(img, (50, 200, 150, 100), (0, 255, 0), 2)
cv2.rectangle(img, (70, 220), (180, 280), (0, 128, 0), -1)

cv2.circle(img, (300, 100), 30, (255, 255, 0), -1, cv2.LINE_AA)
cv2.circle(img, (300, 100), 60, (255, 0, 0), 3, cv2.LINE_AA)

pts = np.array([[250, 200], [300, 200], [350, 300], [250, 300]])
cv2.polylines(img, [pts], True, (255, 0, 255), 2)

text = 'Hello? OpenCV ' + cv2.__version__
cv2.putText(img, text, (50, 350), cv2.FONT_HERSHEY_SIMPLEX, 0.8, 
            (0, 0, 255), 1, cv2.LINE_AA)

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

자르기 영역을 사용해보자

출처 : 패스트 캠퍼스 

마스크 연산을 지원하는 픽셀 값 복사 함수

 

cv2.copyTo(src, mask, dst=None) -> dst
  • src: 입력 영상
  • mask: 마스크 영상. cv2.CV_8U. (numpy.uint8)0이 아닌 픽셀에 대해서만 복사 연산을 수행.
  • dst: 출력 영상. 만약 src와 크기 및 타입이 같은 dst를 입력으로 지정하면
    dst를 새로 생성하지 않고 연산을 수행. 그렇지않으면 dst를 새로 생성하여 연산을 수행한 후 반환함.

 

# 마스크 영상을 이용한 영상 합성
src = cv2.imread('airplane.bmp', cv2.IMREAD_COLOR)
mask = cv2.imread('mask_plane.bmp', cv2.IMREAD_GRAYSCALE)
dst = cv2.imread('field.bmp', cv2.IMREAD_COLOR)

if src is None or mask is None or dst is None:
    print('Image load failed!')
    sys.exit()

cv2.copyTo(src, mask, dst)

  • src  , dst 컬러  mask는 그레이스로 해야한다

마스크 알고리즘이 필요하다 이게 주요 기능이 될거같다

728x90
반응형

'Open CV' 카테고리의 다른 글

Open CV ... 마우스  (0) 2021.02.17
Open CV  (0) 2021.02.16

관련글 더보기

댓글 영역