去年的某个时候,在学习贾志刚老师OpenCv教程的过程中,我开始对Linux系统中运行Python+OpenCv来了兴趣,正好又在熟悉统信UOS中,于是乎就设想着用UOS系统运行一下Python+OpenCv吧。那就说干就干,走起!
然而,过程是非常艰难的,我不是计算机科班出生,所有的知识都是通过网络学来的,经验和结果都是不断试错出得来的,所以,您要是大佬的话,下面所有的内容您就别看了,怕您笑话啦。这两天终于把这个系统搭建成功了,于是赶紧记录下来,给自己做个备忘,也供有同样想法的朋友做个参考吧。见笑啦!
我用的系统是统信UOS个人桌面版V20,有空闲的电脑,就没有用虚拟机(用虚拟机也是同样的情况)。系统安装好、激活,系统更新(其实更不更新都行,只是安装好了之后,更新的时间要比下载opencv等部件的时间要少得多,所以就更新了),打开开发者模式。如果没有打开开发者模式的话,连anacond都正常安装不了的。当然了,我还尝试着用过银河麒麟、深度社区版、ubuntu18,其实遇到的问题都差不多,最后还是踏踏实实在UOS 上摸索试错吧。好在经过数月的跌跌撞撞,最终还是搭建成了,可以正常运行了。好开心,哈哈...
一、下载文件
https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ 清华大学开源软件镜像站
通过上面这个网站下载anacond安装文件: Anaconda3-2018.12-Linux-x86_64.sh 。在搭建的过程中,我还下载过Anaconda3-2020.10-Linux-x86_64.sh 和 Anaconda3-2021.04-Linux-x86_64.sh ,这两个最终都没有成功,原因是Python的版本是3.8,好像没有能正常匹配python版的opencv。而Anaconda3-2018.12-Linux-x86_64.sh 的Python版本是3.7,有适配的Python版的opencv,请您不要再走我的弯路 。在这个过程中我学习的网址是( Anaconda: Linux下安装Anaconda )。
二、安装anacond
下载完成后,在 Downloads(下载)文件夹下(下载后的Anaconda3-2018.12-Linux-x86_64.sh文件在的文件夹),空白处右键选择“在终端中打开”,然后输入:
bash Anaconda3-2018.12-Linux-x86_64.sh
然后一路回车,一路“yes”。最后输入以下两行命令:
source ~/.bashrc
conda --version
屏幕上显示:
(base) EmptyBowl@EB-PC:~$ conda --version
conda 4.5.10 (好像是这个版本号,sorry,很不严谨,不过只要出现版本号就表示anacond安装成功啦!哈哈)
这个时候,在系统的文件管理的主目录里面,会有一个 anaconda3 文件夹,占空间6G以上,这个就是安装好的anacond所在文件夹。
三、安装anacond自认的opencv插件
在上一步的终端窗口中,接着输入命令:
anaconda-navigator
这里要注意,有时候打开终端后输入这个命令,anacond界面未响应,并有一些提示(抱歉,我英语很菜的,不认识),主要是命令行最前面没有(base),如 EmptyBowl@EB-PC:~$ 。这个时候就需要连输入以下两行命令:
source ~/anaconda3/bin/activate root
anaconda-navigator
这时候,命令行一定是带(base) 的,如 (base) EmptyBowl@EB-PC:~$ 。并且,andcond 也开始启动啦。在刚才这个过程中我学习的网址是( Linux中 anaconda 启动其终端命令行)。
1.在启动后的anacond界面的最左边点击 Environments , installed 下拉框中选择 all ,最右侧框中输入 opencv ,下方界面出现liboopencv、opencv、py-opencv三个待选项(版本好像都是3.4.2)(一定会出现的,如果空白,说明网速不行,要多试几次),都选上,右下角有绿色的 Apply ,点击。等待一段时间后,屏幕中间的小窗口右下角出现绿色 Apply 后,点击。这一步需要等待了,要看网速了,不一定什么时候网速快,傍晚、凌晨、半夜、上班时间...... 自己试验吧,最终会下载完的。
2.上一步完成后,anacond界面中会再多出现一个 r-opencv 的选项框,依然是选择,Apply,等待,Apply。重复上一步操作,直到liboopencv、opencv、py-opencv、r-opencv四个前面的待选框全都变绿,都下载完成后,OK。
在这个过程和上一个过程完成后,会出现anacond.navigator由1.19.x 升级到 2.0.5 版本的提示,依照提示完成升级。如果此时在终端查看anacond版本(用命令:conda --version),会显示 conda 4.10.1 的返回值。
3.不换终端窗口,删除刚才下载的opencv。请不要骂我(——好容易下载完,又TM的要删掉,有毛病啊?),不好意思,因为在专业知识和英语上我很菜的,我曾经试了好多次,必须如此操作,先装后删,才能成功。
输入以下命令:
conda list opencv
显示结果:
(base) EmptyBowl@EB-PC:~/Downloads$ conda list opencv
# packages in environment at /home/EmptyBowl/anaconda3:
#
# Name Version Build Channel
libopencv 3.4.2 hb342d67_1
opencv 3.4.2 py37h6fd60c2_1
py-opencv 3.4.2 py37hb342d67_1
r-opencv 0.1 r36h29659fb_0 输入命令:
conda uninstall libopencv
等一会,出现很长篇幅的应该是部件名称吧,后面直到出现: Proceed ([y]/n)? y 输入 y 回车,下面,会有261个左右程序或部件的下载过程...... 等着吧,下载的速度还是依照时间段有所不同,和前面遇到的一样,还是自己试一下吧。直到出现 (base) EmptyBowl@EB-PC:~/Downloads$ ,哈哈,结束。这时候再输入 conda list opencv ,查找anacond当中的opencv插件情况,返回值就为空了,卸载anacond默认opencv组件完成。本过程和下一个过程我学习的网址是( http://www.likecs.com/show-81861.html linux/ubuntu下最简单好用的python opencv安装教程 ( 解决 imshow, SIFT, SURF, CSRT使用问题) )。
在这里我想要说说自己的思考,可能就是这样下载anacond默认opencv组件后又删除的过程当中,通过anacond.navigator版本升级、以及这个步骤当中二百多个程序或部件的安装,确保了好多必须的程序或部件都安装好了,不会再出现imshow()等不能实现的情况了。再一个,如果没有这样的操作,在进行下一步安装真正可用的opencv部件命令的时候,会下载一个文件类型为 *.tar.gz ,大小在148M的不能使用的文件,而下一个步骤中,成功安装的文件类型为 *.whl ,文件大小57M。
4.最终的目的:安装真正可用的opencv部件。输入命令:
pip install opencv-contrib-python
当然,也可以输入命令:
pip install opencv-python
好了,等着吧,只要能用,安装那个都行的,哈哈...... 最终成功了,喜不自禁的把最终显示的代码复制粘贴下来了。
(base) EmptyBowl@EB-PC:~/Downloads$ pip install opencv-contrib-python
Collecting opencv-contrib-python
Downloading opencv_contrib_python-4.5.2.52-cp37-cp37m-manylinux2014_x86_64.whl (57.4 MB)
|████████████████████████████████| 57.4 MB 29 kB/s
Requirement already satisfied: numpy>=1.14.5 in /home/EmptyBowl/anaconda3/lib/python3.7/site-packages (from opencv-contrib-python) (1.20.1)
Installing collected packages: opencv-contrib-python
Successfully installed opencv-contrib-python-4.5.2.52
(base) EmptyBowl@EB-PC:~/Downloads$
查看了一下,确实安装进去了。好了,成了
(base) EmptyBowl@EB-PC:~/Downloads$ conda list opencv
# packages in environment at /home/EmptyBowl/anaconda3:
#
# Name Version Build Channel
opencv-contrib-python 4.5.2.52 pypi_0 pypi
(base) EmptyBowl@EB-PC:~/Downloads$
四、代码测试
用anacond当中的jupyter或Spyder,都能实现,成功!哈哈...
具体测试代码就不附了,自己本身学得就很肤浅,不能再班门弄斧了。
向文中引用网址的博主表示感谢!向其他博主同样表示感谢!