오늘도 황교수님을 만나게 되었다
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() #모든 창을 종료해라
'etc > FastCampus 챌린지' 카테고리의 다른 글
[패스트캠퍼스 수강 후기] 컴퓨터비전인강 100% 환급 챌린지 6 회차 (0) | 2020.10.24 |
---|---|
[패스트캠퍼스 수강 후기] 컴퓨터비전인강 100% 환급 챌린지 5 회차 (0) | 2020.10.23 |
[패스트캠퍼스 수강 후기] 컴퓨터비전인강 100% 환급 챌린지 3 회차 (0) | 2020.10.21 |
[패스트캠퍼스 수강 후기] 컴퓨터비전인강 100% 환급 챌린지 2 회차 (0) | 2020.10.20 |
[패스트캠퍼스 수강 후기] 컴퓨터비전인강 100% 환급 챌린지 1 회차 (0) | 2020.10.19 |