Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- ML
- pandas
- k-최근접 이웃 분류
- index
- 사이킷런
- opencv
- 비트와이즈
- NULL
- KNeighborsClassifier
- NAN
- 머신러닝
- 이미지프로세싱
- dropna
- Supervised learning
- Python
- dataframe
- 결측치
- 이미지처리
- computer vision
- 데이터프레임
- 알파브렌딩
- scikit-learn
- 결측값
- Deep learning
- mask detection
- tfidfvectorizer
- 파이썬
- sklearn
- 판다스
- 지도학습
Archives
- Today
- Total
Sun.El Data Analysis
[OpenCV] 이미지/동영상 읽기 및 저장 본문
728x90
OpenCV(Computer Vision)
다양한 영상(이미지)나 동영상 처리에 사용되는 오픈소스 라이브러리
1. 설치방법
pip install opencv-python
2. image 파일
2.1 image 출력
[IN]
import cv2 #OpenCV 불러오기
img = cv2.imread('./img/panda.jpg') # 해당 경로의 파일을 읽어옴
cv2.imshow('panda', img) #panda라는 이름의 창에 img를 표시
key = cv2.waitKey(0) #지정된 시간(millisecond)동안 사용자 키 입력 대기(아무키나 누르면 꺼짐), 0-무한대기
print(key) #esc시 입력시 ===> 27(아스키코드값) 출력
cv2.destroyAllWindows() #모든창 닫기
2.2 이미지 읽기
cv2.imread([파일경로], [읽기옵션])
[읽기옵션]
cv2.IMREAD_COLOR : 컬러(BGR) 스케일, 기본값 1
cv2.IMREAD_UNCHANGED : 파일에 저장된 스케일, 기본값 -1
cv2.IMREAD_GRAYSCALE : 그레이 스케일, 0
[IN]
import cv2 #OpenCV 불러오기
img_color = cv2.imread('./img/panda.jpg',cv2.IMREAD_COLOR) #cv2.IMREAD_COLOR = 1
img_unchanged = cv2.imread('./img/panda.jpg',cv2.IMREAD_UNCHANGED) #cv2.IMREAD_UNCHANGED = -1
img_grayscaled = cv2.imread('./img/panda.jpg',cv2.IMREAD_GRAYSCALE) #cv2.IMREAD_GRAYSCALE = 0
cv2.imshow('panda_color', img_color) #panda_color라는 이름의 창에 img_color를 표시
cv2.imshow('panda_unchanged', img_unchanged)
cv2.imshow('panda_grayscaled', img_grayscaled)
img.shape
cv2.waitKey(0)
cv2.destroyAllWindows()
[OUT]
(853, 1280, 3) #가로, 세로, 채널(3: 컬러)
2.3 이미지 저장하기
[IN]
img_file = './book/img/girl.jpg'
save_file = './book/img/girl_gray_save.jpg'
img = cv2.imread(img_file, cv2.IMREAD_GRAYSCALE)
if img is not None:
cv2.imshow('IMG',img)
cv2.imwrite(save_file, img) #cv2.imwrite 이미지 저장
cv2.waitKey(0)
cv2.destroyAllWindows()
else:
print('No Image file.')
3. 영상 파일
3.1 동영상 파일 읽기
[IN]
import cv2
video_file = './book/img/big_buck.avi'
cap = cv2.VideoCapture(video_file) #cv.Video 비디오 파일 읽기
if cap.isOpened():
fps = cap.get(cv2.CAP_PROP_FPS) #비디오 파일의 프레임 수 구하기
delay = int(1000/fps)
print("FPS: %f, delay: %ddms" %(fps, delay))
while True:
ret, img = cap.read() #cap.read() 비디오의 한 프레임씩 읽음, 성공 여부에 따라 ret = True/False, img에 읽은 프레임 수 입력
if ret:
cv2.imshow(video_file, img)
cv2.waitKey(25)
else:
break
else:
print("can't open vido.")
cap.release() #자원 반납
cv2.destroyAllWindows() #모든 창 닫기
3.2 카메라 구동 → 캡쳐 후 저장
[IN]
import cv2
cap = cv2.VideoCapture(0) #카메라 0번 장치 연결
width = cap.get(cv2.CAP_PROP_FRAME_WIDTH) #프레임 폭 값 구하기
height = cap.get(cv2.CAP_PROP_FRAME_HEIGHT) #프레임 높이 값 구하기
print("Original width : %d, height : %d" % (width, height))
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 320) #프레임 폭 설정
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 240) #프레임 높이 설정
width = cap.get(cv2.CAP_PROP_FRAME_WIDTH) #재지정한 프레임 폭 값 구하기
height = cap.get(cv2.CAP_PROP_FRAME_HEIGHT) #재지정한 프레임 높이 값 구하기
print("Resized width : %d, height : %d" % (width, height))
if cap.isOpened(): #cap 객체가 지정한 파일로 정상적으로 초기화되었는지 확인하는 코드
while True:
ret, img = cap.read()
if ret:
cv2.imshow('camera', img) #프레임 화면에 표시
if cv2.waitKey(1) != -1: #아무키나 누르면 빠져나옴
cv2.imwrite('./img/photo.jpg', frame) #프레임을 photo.jpg로 저장
break
else:
print('no frame!')
break
else:
print("can't open camera!")
cap.release()
cv2.destroyAllWindows()
3.3 카메라 녹화 → 저장
[IN]
import cv2
cap = cv2.VideoCapture(0) #카메라 0번 장치 연결
if cap.isOpened(): #cap 객체가 지정한 파일로 정상적으로 초기화되었는지 확인하는 코드
file_path = './img/record.avi' #저장할 파일 경로
fourcc = cv2.VideoWriter_fourcc(*'DIVX') #인코딩 포맷 문자
fps = 30.0 #fps, 초당 프레임 수
width = cap.get(cv2.CAP_PROP_FRAME_WIDTH) #프레임 폭 값 구하기
height = cap.get(cv2.CAP_PROP_FRAME_HEIGHT) #프레임 높이 값 구하기
size = (int(width), int(height)) #프레임 크기
out = cv2.VideoWriter(file_path, fourcc, fps, size) #VideoWriter 객체 생성
while True:
ret, frame = cap.read()
if ret:
cv2.imshow('camera-recording', frame) #프레임 화면에 표시
out.write(frame) #파일 저장
if cv2.waitKey(int(1000/fps)) != -1:
break
else:
print('no frame!')
break
out.release() #파일 닫기
else:
print("can't open camera!")
cap.release()
cv2.destroyAllWindows()
#cv2.waitKey(1) #지연시키고 싶은 시간, 단위 milisecond
'Deep Learning' 카테고리의 다른 글
[openCV] 컬러 스페이스 (0) | 2023.08.22 |
---|---|
[openCV] ROI(Region Of Interest) (0) | 2023.08.22 |
[openCV] Window management, Keyboard Event, Trackbar, Mouse event (0) | 2023.08.21 |
[OpenCV] 도형 그리기 (0) | 2023.08.21 |
[딥러닝] 퍼셉트론 및 게이트 개념 (0) | 2023.08.11 |