본문 바로가기

etc/FastCampus 챌린지

[패스트캠퍼스 수강 후기] 컴퓨터비전인강 100% 환급 챌린지 4 회차

728x90
반응형

오늘도 황교수님을 만나게 되었다

3일차인데 조금씩 부담이 느껴진다...... D - 47..... 화이팅

 

Matplotlib을 이용한 영상 출력

▪ Matplotlib 라이브러리 
• 함수 그래프, 차트(chart), 히스토그램(histogram) 등의 다양한 그리기 기능을 제공하는 Python 패키지 

▪ 컬러 영상 출력 
• 컬러 영상의 색상 정보가 RGB 순서이어야 함 
• cv2.imread() 함수로 불러온 영상의 색상 정보는 BGR 순서이므로 이를 RGB 순서로 변경해야 함 → cv2.cvtColor() 함수 이용 

▪ 그레이스케일 영상 출력 
• plt.imshow() 함수에서 컬러맵을 cmap='gray' 으로 지정

import matplotlib.pyplot as plt
import cv2

# 컬러 영상 출력
imgBGR = cv2.imread('niko.jpg')
imgRGB = cv2.cvtColor(imgBGR, cv2.COLOR_BGR2RGB) 
#cvtColor BRG 을 RGB 순서로 바꿔줌

plt.axis('off')
plt.imshow(imgRGB)
plt.show()

# 그레이 스케일 영상 출력
imgGray = cv2.imread('niko.jpg', cv2.IMREAD_GRAYSCALE)

plt.axis('off')
plt.imshow(imgGray, cmap='gray')
plt.show()

두개의 영상을 함께 출력

# 두개의 영상을 함께 출력
plt.subplot(121), plt.axis('off'), plt.imshow(imgRGB)
plt.subplot(122), plt.axis('off'), plt.imshow(imgGray,cmap='gray')

plt.show()

 

 

▪ 이미지 슬라이드쇼 
 • 특정 폴더에 있는 모든 이미지 파일을 이용하여 슬라이드쇼를 수행

▪ 구현 할 기능 • 특정 폴더에 있는 이미지 파일 목록 읽기 
 • 이미지를 전체 화면으로 출력하기 
 • 일정 시간동안 이미지를 화면에 출력하고, 다음 이미지로 교체하기 (무한루프)

특정 폴도에 있는 이미지 파일(*.jpg) 목록 읽어오기

1번째 방법 os.listdir()

2번째 방법 glob.glob()

 

import sys
import glob
import cv2

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

if not img_files:
    print("There are no jpg files in 'images' folder")
    sys.exit()

for f in img_files:
    print(f)

cv2.namedWindow('image', cv2.WINDOW_NORMAL)
cv2.setWindowProperty("image",cv2.WND_PROP_FULLSCREEN,
                              cv2.WINDOW_FULLSCREEN)

cnt = len(img_files)
idx = 0
while True:
    img = cv2.imread(img_files[idx])

    cv2.imshow('image',img)
    
    if cv2.waitKey(1000) == 27: # 1초 대기
        break 
    
    idx += 1
    if idx >= cnt:
        idx = 0

cv2.destroyAllWindows()

 

img_files = glob.glob('.\\images\\*.jpg')
현재폴더 밑에 images 안에 '.jpg' 형태의 파일을 모두 불러와라

if not img_files:
    print("There are no jpg files in 'images' folder")
    sys.exit()
실제로 잘 불러왔는지 확인하기 위해서 for 문과 print 를 통해 확인

출력 결과 ( 5개의 파일을 모두 불러오기 성공 )

 

cv2.namedWindow('image'cv2.WINDOW_NORMAL)
windowname : 'image' 로 새창 만들기 ( 새창 형태 : NORMAL )
cv2.setWindowProperty("image",cv2.WND_PROP_FULLSCREEN,
                                cv2.WINDOW_FULLSCREEN)
전체화면으로 띄우기

 

while 문의 무한루프를 통해 image 파일을 화면에 출력을 한다

cnt = len(img_files)
img_files 갯수를 알아오기 위해 count 변수 선언
idx = 0
몇번째를 돌고있는지 확인하기 위해 index 변수 선언

while True: #while 문의 무한루프 사용
    img = cv2.imread(img_files[idx]) # 위 코드에 idx = 0 을 선언하였으니 첫번째 루프 시작에는 0의 값이 온다
   
    if img is None:
        print("Image load failed!")
        break
img 파일이 없다면 "image load failed!" 를 출력 후 코드 종료

cv2.imshow('image',img) # 'image' 라는 창의 이름으로 저기 img 를 출력해라 

    if cv2.waitKey(1000) == 27# 1초 대기 # ESC(27) KEY 입력 대기 입력시 break 로 무한루프 종료
        break 
  # if cv2.waitKey(1000) >= 0: 
# 아무키 누르면 종료 ( 1초가 지났는데 아무키도 누르지 않는다면 '-1' 의 값을 리턴 한다 )
   #     break

    idx += 1 # index 값 +1 증가 ( 2번째 영상 )

    if idx >= cnt: # idx 값이 cnt 값보다 같거나 커지게 되면
        idx = 0 # idx 값을 다시 0으로 초기화 시켜서 첫번째 영상부터 다시 반복하게 된다

cv2.destroyAllWindows() #모든 창을 종료해라

 

 

728x90
반응형