问题描述
每次在新的主机上生成一个虚拟机时,都需要按照官方手册在Ubuntu上编译OpenCV。然而问题在于,这个过程大约需要20到30分钟,取决于虚拟机的类型。用户想知道是否有办法将编译好的OpenCV存储为一个包,比如存储在S3上,或者其他任何方式,以避免重复编译的过程。用户指出,创建一个虚拟机镜像并不符合他的需求。
解决方案
请注意以下操作可能涉及版本差异,进行操作前请做好备份。
方案1:存档已编译的OpenCV目录
如果最终结果完全包含在某个目录中,你可以在一个主机上完成安装和编译后,将该目录存档,并在新的主机上恢复。这在一些应用中是有效的。然而,根据Ubuntu 18.04上安装OpenCV的步骤和make文件的分析,我认为这种方法可能不适用于OpenCV,因为它的构建产物分布在Ubuntu系统的各个位置。
方案2:减少安装时间
你可以通过跳过实际的构建过程来显著减少安装时间,因为构建过程似乎占据了大部分时间。以下是一个可能的方案,用于在后续安装中复用预构建的OpenCV源码树。
在初始安装中:
1. 在构建完成但尚未进行“Installing and verifying OpenCV”步骤之前,插入以下步骤来保存预构建的官方OpenCV源码树到S3:
– 配置S3访问权限(参考”Copying from s3 to EC2 instance”指南)
– 运行以下命令将预构建的OpenCV源码树打包并上传到S3:
bash
tar cvfz pre_built_opencv.tgz opencv*
s3cmd put pre_built_opencv.tgz s3://<bucket_name>
– 可选:现在可以删除本地的压缩包副本。
在后续安装中:
1. 替换“Step #2: Download the official OpenCV source”步骤为以下步骤,用于从S3中提取预构建的OpenCV源码树:
– 配置S3访问权限(参考”Copying from s3 to EC2 instance”指南)
– 运行以下命令从S3中获取预构建的OpenCV源码树并解压:
bash
cd ~
s3cmd get s3://<bucket_name>/pre_built_opencv.tgz pre_built_opencv.tgz
tar xvzf pre_built_opencv.tgz
– 可选:现在可以删除本地的压缩包副本。
- 在“Step #4: Configure and compile OpenCV for Ubuntu 18.04”中,跳过“Configure OpenCV with CMake”部分,将“Compiling OpenCV on Ubuntu 18.04”部分替换为以下步骤,以进入预构建的OpenCV构建目录:
bash
cd ~/opencv/build
需要注意的是,我没有自己运行过这个方案,但我认为至少对于相同类型的虚拟机应该是有效的。如果对于不同类型的虚拟机不起作用,你可以尝试使用不同的存档文件名重新运行初始安装。