일반적으로 영상을 실행시킬때 opencv 자체에서 제공하는 gui window를 통해 영상을 확인합니다.
문제는 쥬피터 노트북 상에선 해당방법으로 영상을 실행하면 커널이 shut down 되는 현상이 발생됩니다.
이번 포스팅에서는 ipywidgets 라이브러리를 통해 jupyter notebook 상에서도 영상을 실행하는 방법에 대해 알아보겠습니다.
1) ipywidgets 설치
!pip install ipywidgets
2) 예제 코드
(1) 방법1
필요한 모듈 import
import cv2
from ipywidgets import Image
from IPython.display import display
Image() 클래스를 객체를 생성합니다. 이 객체는 추후 video file에서 읽은 video frame을 담을 그릇이라고 보면 됩니다.
그리고 이러한 그릇들을 쥬피터 노트북상에 보이게 해주는것이 display 함수입니다.
# Open the video file using cv2.VideoCapture
cap = cv2.VideoCapture('London_Street.mp4')
# Create an Image widget to display the video frames
video = Image()
display(video)
cap.read() 함수를 통해 첫번째 이미지를 읽어오는 코드를 작성합니다.
문제 없을시 while succes 안에서 frame을 계속 읽어오게 됩니다.
# Read the first frame of the video
success, frame = cap.read()
while success:
# Convert the frame to a format that can be displayed in the widget
frame = cv2.imencode('.jpg', frame)[1].tobytes()
# Update the Image widget with the current frame
video.value = frame
# Read the next frame
success, frame = cap.read()
여기서 일반적인 방법과 다르게 frame을 byte타입으로 변환합니다.
그리고 이 값을 video.value 에 할당하는식으로 진행됩니다.
output:
만약 영상 파일이 아닌 실시간 캠을 출력하고 싶다면
cv2.VideoCapture(0) 으로 변경해주면 되겠죠?
하지만 단순히 영상 파일만 읽는 목적이라면 opencv 없이 ipywidgets 만 사용해도 무방합니다.
(2) 방법2(simple way)
from ipywidgets import Video
from IPython.display import display
video = Video.from_file('London_Street.mp4')
display(video)
Video.from_file() 에서 파일을 읽어온 후 display 함수를 이용하면 손쉽게 쥬피터 노트북에서 영상을 확인할 수 있습니다.
더 자세한 내용은 공식문서를 참조 바랍니다.
'머신러닝,딥러닝 > opencv' 카테고리의 다른 글
[파이썬 opencv] 오픈 cv에서 selectroi 사용하는 방법 (0) | 2022.12.09 |
---|---|
[파이썬 opencv] 오픈cv 를 통해 비디오(영상) 출력하는 방법 (0) | 2022.12.02 |
[파이썬 opencv] 오픈 cv에서 yolov3 사용하는 방법 (2) | 2022.10.26 |
[파이썬 opencv] 오픈 cv에서 detection model 실행하는 방법 (0) | 2022.10.21 |
[오픈 cv] 트랙바란? 트랙바 사용방법(for opencv 초보자) (0) | 2022.09.14 |
댓글