在Ubuntu,MacOS或Windows上安装OpenCV Docker Image

本文介绍了一款包含OpenCV多个版本及dlib的Docker镜像,不仅适用于Ubuntu、MacOS和Windows系统,还提供了面部地标检测示例代码。文章详细指导了Docker的安装、镜像的使用及如何在Docker环境下运行代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这篇文章中,我们分享了OpenCV 3.4.3的 Docker镜像,以及最近发布的OpenCV 3.4.4和OpenCV 4.0。除OpenCV外,该图像还具有dlib和Facial Landmark Detection示例代码。

每天我们收到一些关于OpenCV和Dlib安装的帖子的电子邮件和评论。即使有详细和经过测试的说明,有时人们也难以启动并运行系统。因此,我们一直在考虑为那些一直在努力解决安装问题的人们提供解决方案。

解决此问题的一种方法是提供安装了所有库的虚拟机(VM)。使用VM的一个巨大缺点是人们需要下载的大文件。有时它可以是10s的GB。

解决此问题的更智能和更新的方法是提供Docker镜像。通常,Docker镜像大小比VM小得多。例如,我们的Docker镜像大小仅为1 GB(压缩大小)。此外,它的启动速度比VM快得多,并且与VM相比,通常可以更快地运行应用程序。Docker只是可以让您的生活变得非常简单的极简事物之一。

此外,正如我们将看到的,可以在Windows,Ubuntu和MacOS上使用相同的docker镜像。如果您不熟悉OpenCV安装,或者想要试用新的OpenCV-3.4.4和OpenCV-4.0(2018年11月20日发布),而不是实际安装在您的系统上,这款docker镜像非常适合您。

这篇文章分为五个部分

第1部分:如何在Linux,MacOS和Windows上安装Docker。

第2节:如何使用OpenCV的 Docker镜像。此图像还附带预安装的dlib。

第3节:如何在Docker Image上运行Facial Landmark Detection演示代码

第4节:如何更改Docker镜像。

1. Docker安装

如何在Ubuntu,MacOS和Windows上安装Docker。

1.1 在Ubuntu上安装Docker

(一)要在Ubuntu 16.04上安装docker,首先将官方Docker存储库的GPG密钥添加到系统:


curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

(二)将Docker存储库添加到APT源:


sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

 (三)接下来,使用新添加的repo中的Docker包更新包数据库:

sudo apt-get update

(四)确保您要从Docker repo而不是默认的Ubuntu 16.04 repo安装:

apt-cache policy docker-ce

(五)您应该看到类似于以下内容的输出:

docker-ce:

  Installed: (none)

  Candidate: 17.03.1~ce-0~ubuntu-xenial

  Version table:

     17.03.1~ce-0~ubuntu-xenial 500

        500 https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages

     17.03.0~ce-0~ubuntu-xenial 500

        500 https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages

(六)最后,安装Docker:

sudo apt-get install -y docker-ce

1.2 在MacOS上安装 

(一)要在MacOS桌面上安装Docker,首先要访问Docker Store并下载适用于Mac的Docker Community Edition

(二)双击Docker.dmg以打开安装程序,然后将Moby将鲸鱼拖到Applications文件夹。

(三)双击Applications文件夹中的Docker.app以启动Docker。

(四)启动后,系统会提示您使用系统密码授权Docker.app。需要特权访问才能安装网络组件和Docker应用程序的链接。

顶部状态栏中的鲸鱼表示Docker正在运行,并且可以从终端访问。

1.3 在Windows 7或更高版本中安装Docker Toolbox

(一)下载并安装适用于Windows的Docker Toolbox。安装程序将Docker Toolbox,VirtualBox和Kitematic添加到“ 应用程序”文件夹中。

(二)在桌面上,找到Docker QuickStart终端图标。

(三)双击Docker QuickStart图标以启动预配置的Docker Toolbox终端。

bash
Running pre-create checks...
(default) No default Boot2Docker ISO found locally, downloading the latest release...
(default) Latest release for github.com/boot2docker/boot2docker is v18.06.1-ce
(default) Downloading C:\Users\imsau\.docker\machine\cache\boot2docker.iso from https://github.com/boot2docker/boot2docker/releases/download/v18.06.1-ce/boot2docker.iso

(四)按enter键,安装将自动开始。完成后,文件将出现在

\ users \ username \ .docker \ machine \ cache \ boot2docker.iso

如果系统显示“ 用户帐户控制”提示以允许VirtualBox对您的计算机进行更改,请选择“ 是”
终端为您设置Docker Toolbox做了几件事。完成后,终端显示$提示符。

2 安装Docker OpenCV Image

docker镜像已更新为启用X11-Forwarding,现在还包含一个测试安装的示例。使用docker pull获取最新图像。

要使用泊坞窗图像,请使用以下说明:

docker pull spmallick/opencv-docker:opencv

一旦下载了图像,我们就可以使用以下命令启动它

docker run --device=/dev/video0:/dev/video0 -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=$DISPLAY -p 5000:5000 -p 8888:8888 -it spmallick/opencv-docker:opencv /bin/bash

我们花一点时间详细检查一下这个命令:

-v /tmp/.X11-unix:/tmp/.X11-unix有助于X11转发,因此我们可以使用cv :: imshow等函数。

-e用于传递环境变量。

-it启动交互式会话

-p设置一个前进端口。此标志将容器的端口映射到主机系统上的端口。

/ bin / bash在启动时运行.bashrc文件

该图像具有的OpenCV 3.4.3安装在的/ usr /本地,OpenCV的3.4.4在〜/安装/ OpenCV的-3.4.4和的OpenCV 4.0.0在〜/安装/ OpenCV的主。

使用Python环境:
对于OpenCV 3.4.3

workon OpenCV-3.4.3-py3

ipython

进入iPython提示后,执行

import cv2

cv2.__version__

exit()

要停用虚拟环境,请使用

deactivate

类似地,对于OpenCV 3.4.4OpenCV 4.0.0

workon OpenCV-3.4.4-py3

ipython

进入iPython提示后,执行

import cv2

cv2.__version__

exit()

要停用虚拟环境类型

deactivate
workon OpenCV-master-py3
ipython

进入iPython提示后,执行

import cv2
cv2.__version__
exit()

3 在Docker镜像上运行面部地标检测

为了在docker镜像上测试OpenCVdlib的安装,我们提供了一个可以试用的Facial Landmark检测示例。

(一)首先,我们确保拥有最新的docker镜像。

docker pull spmallick/opencv-docker:opencv

(二)接下来,我们运行前面部分中指定的docker镜像。

docker run --device=/dev/video0:/dev/video0 -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=$DISPLAY -p 5000:5000 -p 8888:8888 -it spmallick/opencv-docker:opencv /bin/bash

(三)创建docker容器并运行后,您将在/ root / - commondemoinstallation中找到3个文件夹。该演示文件夹包含C ++Python的面部标志检测代码的版本。

(四)要运行Python脚本,请按照以下步骤操作。说明适用于OpenCV-4.0.0。对于OpenCV-3.4.3和OpenCV-3.4.4,只需更改前面讨论的环境。

cd ~/demo/python
source activate OpenCV-master-py3
python facialLandmarkDetector.py
source deactivate

(五)要运行C ++代码,请按照以下步骤操作:

cd ~/demo/cpp/

您将找到3个文件夹,每个文件夹安装一个OpenCV版本。文件夹中存在的CMakeLists.txt文件可用作该特定OpenCV版本的构建代码的参考。

cd OpenCV-3.4.4/build
cmake ..
cmake --build . --config Release
cd ..
./build/facialLandmarkDetector

4 如何提交对Docker Image的更改

默认情况下,您在docker镜像中所做的任何更改都不会保存。

要提交对docker镜像所做的更改,我们需要按照以下步骤操作。我们将以下面的终端图像为例

(一)查找容器ID:找到它的最简单方法是在docker容器中记下root @后面的文本。例如,在上图中,docker容器ID为56a07cf4614c。另请注意,每次使用docker run创建新容器时,Container ID都会有所不同。

(二)进行更改:在上面的示例中,我们创建一个简单文件HelloUser.sh,从命令行运行时输出一些文本。

(三)退出:完成更改后,我们需要使用exit命令退出容器。

(四)提交更改:最后,要提交对docker镜像所做的更改,请使用以下命令

sudo docker commit CONTAINER_ID NAME_OF_DOCKER_IMAGE

在我们的例子中,我们使用

sudo docker commit 56a07cf4614c my-docker-image

(五)检查图像:您希望确保在运行以下命令时显示已提交的docker镜像

docker images

(六)使用图像:下次要使用此docker镜像时,只需使用以下命令: 

docker run --device=/dev/video0:/dev/video0 -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=$DISPLAY -p 5000:5000 -p 8888:8888 -it NAME_OF_DOCKER_IMAGE /bin/bash

在我们的具体示例中,我们使用

docker run -u 0 -it -p 8888:8888 -p 5000:5000 my-docker-ima

 

<think>好的,用户现在需要了解如何安装完整版的OpenCV。之前的对话中,用户遇到了缺少GUI支持的错误,所以这次的问题可能是想彻底解决那个问题,确保安装的是包含所有功能的版本。 首先,我需要确认用户的操作系统,因为不同系统的安装步骤不同。之前的回复已经分开了WindowsUbuntu/Debian、macOS和Anaconda的解决方案,所以这里可能需要重复但更详细地说明安装完整版的步骤。 用户可能已经尝试过安装opencv-python,但可能还是遇到了问题,者他们可能安装了headless版本。需要强调卸载headless版的重要性,并确保安装正确的包。 另外,用户可能对“完整版”的定义不太清楚,需要明确说明opencv-python和opencv-contrib-python的区别,以及后者包含额外的模块。 还有,用户可能是在开发环境中使用,比如Jupyter笔记本Docker,可能需要特别注意事项,比如依赖项安装环境配置。 验证安装是否成功的部分也很重要,用户需要知道如何检查OpenCV的版本和编译信息,确认GUI支持是否被包含。 此外,可能需要提醒用户,某些情况下(如服务器无头环境)可能无法使用GUI功能,这时候替代方案如matplotlib就派上用场了。 最后,用户可能对源码编译感兴趣,但大多数情况下推荐使用预编译的包,除非有特殊需求。需要简单提及源码编译的步骤,但强调其复杂性。 总结一下,回答需要涵盖不同系统的安装步骤、包的选择、验证方法以及常见问题处理,确保用户能顺利完成完整版OpenCV安装并解决之前的错误。</think>以下是安装完整版OpenCV的详细指南: --- ### 一、完整版 vs Headless版区别 | 版本类型 | 包含功能 | 典型安装命令 | |------------------|----------------------------------|-----------------------------| | 完整版 | 包含GUI支持(图像显示、窗口操作) | `pip install opencv-python` | | Headless版 | 无GUI功能,仅保留核心算法 | `pip install opencv-python-headless` | --- ### 二、各系统安装方法 #### ▶ Windows系统 ```bash # 1. 卸载可能存在的旧版本 pip uninstall opencv-python opencv-python-headless -y # 2. 安装完整版(自动包含GUI支持) pip install opencv-python # 可选:安装包含额外模块的版本 pip install opencv-contrib-python ``` #### ▶ Ubuntu/Debian系统 ```bash # 1. 安装系统依赖 sudo apt-get update sudo apt-get install -y \ libgtk2.0-dev \ libavcodec-dev \ libavformat-dev \ libswscale-dev # 2. 安装完整版OpenCV pip install --upgrade opencv-python ``` #### ▶ macOS系统 ```bash # 通过Homebrew安装依赖 brew install pkg-config # 安装完整版OpenCV pip install opencv-python ``` #### ▶ Anaconda环境 ```bash conda install -c conda-forge opencv ``` --- ### 三、验证安装是否成功 ```python import cv2 # 检查版本(应 >= 3.4.0) print(cv2.__version__) # 验证GUI支持 print(cv2.getBuildInformation()) # 输出中应包含"GTK+""QT"支持 ``` --- ### 四、常见问题解决 #### 1. 仍然报错"not implemented" - 强制重新安装: ```bash pip install --force-reinstall opencv-python ``` - 检查是否存在多版本冲突: ```bash pip list | grep opencv ``` #### 2. 需要额外功能模块 - 安装扩展版: ```bash pip install opencv-contrib-python ``` 包含: - 面部识别 - 文本检测 - 3D重建 - 深度神经网络模块 --- ### 五、进阶安装方法(源码编译) ```bash # 仅推荐需要自定义功能时使用 git clone https://github.com/opencv/opencv.git mkdir build && cd build cmake -D WITH_GTK=ON -D WITH_QT=ON .. make -j4 sudo make install ``` --- ### 六、使用建议 1. **Jupyter Notebook用户**: ```python %matplotlib inline # 结合使用matplotlib显示图像更稳定 ``` 2. **Docker用户**: ```dockerfile FROM python:3.9 RUN apt-get update && apt-get install -y libgl1 RUN pip install opencv-python ``` 3. **服务器环境**: ```python # 使用以下方式保存图像代替显示 cv2.imwrite("output.jpg", image) ``` --- 通过以上步骤安装OpenCV将包含完整的GUI支持功能,可以正常使用`cv2.imshow()`, `cv2.namedWindow()`等图形界面相关函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值