본문 바로가기
Development/Docker

How to imshow() webcam using opencv python in docker

by shuka 2023. 4. 19.
728x90
728x90

 

imshow()를 위한 docker container 실행

 

docker 안에서 opencv-python과 webcam을 연결해서 cv2.imshow()를 하려면 container를 생성할 때 몇몇 option을 추가해 줘야 한다.

 

만약 option 없이 docker container 내부에서 imshow()를 할 경우 다음과 같은 에러가 발생한다.

 

'getStreadmChannelGroup Camera index out of range'

 

 

# docker container를 만들기 전에 'xhost +'를 terminal에 친다.
xhost +

# 필수 option
-v /tmp/.X11-unix/:/tmp/.X11-unix
--env QT_X11_NO_MITSHM=1
--device=/dev/video0:/dev/video0
-e DISPLAY=$DISPLAY

ex) 
xhost +

docker run -ti -v /tmp/.X11-unix/:/tmp/.X11-unix --env QT_X11_NO_MITSHM=1 --device=/dev/video0:/dev/video0 -e DISPLAY=$DISPLAY --name test pytorch/pytorch:1.12.1-cuda11.3-cudnn8-devel /bin/bash

 

각 option에 대한 설명은 밑의 링크 블로그에 설명되어 있고, 혹시 몰라 빠져도 되는 option이 있나 하나하나 지우면서 test해 봤는데 하나라도 빠지면 제대로 imshow()되지 않는다.

 

참고)

https://blog.naver.com/PostView.naver?blogId=cheeryun&logNo=222383212241&categoryNo=295&parentCategoryNo=0

 

[IT 꿀팁] 도커(docker) + cv2.imshow | 도커 컨테이너에서 OpenCV GUI 사용하기 (feat. X11)

그간의 고통을 끝으로 로컬 PC에서 사용하는 Conda와 작별을 고하고 도커(Docker)에 익숙해져 보려고 ...

blog.naver.com

 

 

opencv-python 설치

docker container를 실행하였으면 나면 다음과 같이 opencv-python을 설치해준다.

 

pip install opencv-python

# *libGL*.*so*.*1 오류가 발생할 경우*
apt-get install libgl1-mesa-glx

#libgthread-2.0.so.0 오류가 발생할 경우
apt-get install libglib2.0-0

#libSM.so.6 오류가 발생할 경우
apt-get install libsm6 libxext6 libxrender-dev

 

 

만약, pip install opencv-python을 그냥 설치를 하면 최신 opencv version(작성 기준: 4.7.0.68)이 설치가 되는데 다음과 같은 오류가 발생할 수도 있다.

 

"The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Cocoa support If yoou are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function 'cvShowInage'"

 

 

 

해당 부분에 대해 오류 문구처럼 libgtk2.0-dev와 pkg-config를 설치하였지만, 내 경우에는 해결되지는 않았고, opencv-python version을 downgrade 하는 방법만 찾았다.

 

pip install opencv-python==4.0.1.23

or

pip install opencv-python==4.0.0.21

 

 

참고)

https://stackoverflow.com/questions/42843316/how-to-include-libgtk2-0-dev-and-pkg-config-in-cmake-when-installing-opencv-on-u

 

How to include libgtk2.0-dev and pkg-config in cmake when installing openCV on Ubuntu 16

I know there are many topics on how to install OpenCV-Python. I went over many of them and they helped me to go through some problems installing openCV-python on Ubuntu I managed to install open...

stackoverflow.com

 

 

python code 실행 결과

설치가 완료되면 webcam 실행 코드를 실행하면 문제없이 실행되는 것을 볼 수 있다.

 

 

python webcam code

 

참고)

https://shuka.tistory.com/34

 

[OpenCV] opencv webcam 기본 예제

python code import cv2 # open webcam cam = cv2.VideoCapture(0) # get fps fps = cam.get(cv2.CAP_PROP_FPS) if cam.isOpened() is False: print('error') while True: #get frame ret, frame = cam.read() if ret is not True: break if frame is None: break cv2.imshow(

shuka.tistory.com

 

 

[OpenCV] opencv webcam 기본 예제

python code import cv2 # open webcam cam = cv2.VideoCapture(0) # get fps fps = cam.get(cv2.CAP_PROP_FPS) if cam.isOpened() is False: print('error') while True: #get frame ret, frame = cam.read() if ret is not True: break if frame is None: break cv2.imshow(

shuka.tistory.com

 

 

728x90
반응형

댓글