Opencv没有在docker内显示图像

Posted

技术标签:

【中文标题】Opencv没有在docker内显示图像【英文标题】:Opencv Not displaying image inside docker 【发布时间】:2018-12-08 05:45:18 【问题描述】:

我正在尝试从 docker 容器内使用 OpenCV imshow GUI。 我使用以下内容来启动我使用 nvidia-docker 的容器,因为该容器包含 GPU 版本的 Tensorflow

xhost +
nvidia-docker run \
--rm \
--name tf_keras \
--link mongodb_database:data_mongo \
-e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-v $1:/abhijit_home \
-p 8888:8888 -p 6006:6006 \
tensorflow_gpu_v1

当我尝试使用 OpenCV 显示图像时,我只是得到一个空白屏幕。

我尝试显示的图像是使用 matplotlib 显示的。我该如何纠正?谢谢

【问题讨论】:

Jupyter 笔记本在显示带有 cv2.imshow() 的图像时存在已知问题。简而言之,不要在 Jupyter 笔记本中使用它。使用另一个绘图库在线显示图像。或者,您可以保存图像,然后将其与 html 或其他 Jupyter 笔记本功能内联显示。但是,使用cv2.startWindowThread() 有可能的解决方法。见here。 你能解决这个问题吗?我在使用 OpenCV 和 Docker 时遇到了同样的问题。 您找到解决方案了吗?我需要在线显示很多图像并且无法保存它,因为性能 【参考方案1】:

这可能与matplotlib 有关。试试

import matplotlib
matplotlib.use('Agg')

【讨论】:

不是,因为OpenCV不使用matplotlib

以上是关于Opencv没有在docker内显示图像的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV - 在捕获循环中没有显示没有等待键的图像[重复]

opencv显示图片的问题

是否可以使用 opencv 的 imshow 显示没有工具栏的图像?

用python在opencv中显示图像

使用 OpenCV Python 以与参考图像相同的方向和尺寸转换和显示裁剪图像

OpenCV:自动将窗口大小调整为显示的图像