本节将介绍如何搭建基于Python+skimage的DIP算法设计开发环境。
部分内容参考自网络资源,我尽量加以标注引用,如果确实有部分内容和已有网络资料重复而又没有加引用,还望多多海涵。
目录
1.1 扩展包安装
1.1.1 搭建Python开发环境
有关Python开发环境的搭建,网上有很多教程。需求不同,内容不同。在此只简单介绍一种适合本教程的方法,不一定是最优的,仅供参考。
首先给出几点建议:
第一,选用windows 64位平台。相信大多数初学者还是更喜欢用windows而不是linux进行算法开发。64位平台很重要,因为我们要装支持64位的开发软件。如果各位所使用的台式机或者笔记本电脑内存在8G以上,就毫不犹豫的安装64位平台吧。
第二,选用Anaconda作为Python构建基础的运行环境,原因懂的都懂。有关Anaconda的安装和配置的帖子,网络上的随处可见,大家尽量去官网下载安装最新版(Anaconda官网下载链接)。不得不说,Anaconda做的太周到了,不仅为我们配置好了常用的Python扩展包(如本教程所用的NumPy、SciPy、MatplotLib等),还集成了多种好用的工具(如Spyder、Jupyter notebook等)。
(上图所示为Anaconda的合作伙伴,来自Anaconda官网)
需要在此强调的一点是,尽管Anaconda在安装过程中会提示用户要修改系统路径,但实际上它什么都没有做。因此,如果想正常运行Python程序,务必要将下面三个路径添加到系统变量中的“Path”下,具体设置方式大家可以自行搜索相关教程。
(以Anaconda安装路径为C:\Anaconda3为例)
- C:\Anaconda3
- C:\Anaconda3\Library\bin
- C:\Anaconda3\Scripts
设置完毕后,系统变量Path如下图所示:
第三,其他工具或扩展包。前面提到,Anaconda安装后,已经集成了各类工具,从IDE开发(如Spyder)到交互式设计(如Jupyter notebook)等等,甚至还在主界面提供了PyCharm的安装链接。但如果你已经迈过了初学者的阶段,想深入的使用更强大的工具开发和涉及更完善的功能,那么你可能还需要单独安装其他相关软件,比如PyCharm、PyQt5、Visual Studio Code,但那都不是小白目前关心的事。本教程也不涉及上述高级工具的介绍。当然,像一些常用配套的扩展包,如numpy(数值计算)、matpplotlib(绘图)、pandas(数据分析)等等,大家还是应该要了解的。不必要求精通,但至少应该会现学现用。
1.1.2 安装Scikit-image扩展包
本小节介绍scikit-image扩展包的安装。
如同其他安装包一样(如Python中常用的另一个DIP扩展包,OpenCV),scikit-image的安装方式主要也有两种,大家根据自己的喜好选择。我们先介绍一种相对复杂且高级方式,然后介绍相对快捷也是推荐的第二种方式。
(1)本地安装
这种方式适用于不联网的机器,过程也不复杂。
首先,下载相应的whl文件(whl文件全称为wheel文件,是Python打包和安装扩展模块的一种格式)到本机指定路径下,比如D:\skimage。然后,调用Python的pip命令,类似“pip install libname.whl”执行安装。
这种方式的优点是安装时不需要网络,或者即便能联网,但是链接外网的速度较慢,又不愿意等待时间太长的情况。不过,由于scikit-image本身更新的并不频繁,基本上是一个季度更新一个小版本。因此,文件下载一次,够用一年。
但对于初学者,还有两个棘手的问题。
第一个问题是whl文件不好找,至少scikit image官网上不好找,不信您自己试试看。当然,这个问题不难解决,有很多网站将常用的python第三方库对应的各个版本的whl文件都汇总好了,方便查找和下载。在此提供两个网址,都是国外的链接,大家可根据个人情况自行选择。
下载链接一:https://pypi.org/project/ ,这个链接更新较快,建议采用。
下载链接二:https://www.lfd.uci.edu/ ,这个链接更新较慢,且主要是面向windows的版本,有很多老的版本。
登录上面任意链接引出的网页,在搜索框中键入:“scikit-image”,即可找到相应的文件。
(scikit-image对应的whl文件下载页面示例,来自第一个链接,为了便于说明,略加修改)
这时第二个问题出现了,即搜索到的文件通常不止一个,除了发布版本的差异之外,还有操作系统的差异,以及Python版本的差异。如上图所示,都是0.22.0版本的文献,按照操作系统,大致分为win(windows)版本、manylinux(linux版本)和macosx(MacOS版本);按照对应的Python版本,又分为cp312(对应Python3.12版)cp311(对应Python3.11版)和cp310(对应Python3.10版),等等。此时一定要牢记,务必提前确认自己所用的操作系统以及Python版本信息,然后选择对应的版本并下载。你如果还能问出“如何使用Python命令行命令,查询系统安装的Python版本?”这样的问题,那再次暴露了你Python初学者的身份。请大家牢记:启动命令行窗口,输入`python -V`或者`python --version`命令,屏幕即显示本机安装的Python版本信息。
举个实例,比如我使用的是64位的Windows11,安装的Python是3.10版,则下载名字为“scikit_image-0.22.0-cp310-cp310-win_amd64.whl”的库文件到指定路径下,然后将命令行的当前路径与上述文件的存储路径一致,键入:
pip install scikit_image-0.22.0-cp310-cp310-win_amd64.whl
如果一切正常,只需等待几秒钟,就能见到类似下图所示的安装成功提示信息。
第一种离线安装到此结束,怎么样,是不是还是觉得有些繁琐呢?没关系,如果你不想绕这么多圈子,而且能流畅的链接外网,还有第二种方式可供选择,特别适合小白使用。
(2)在线安装
假如您是位刚刚接触Python编程的小白,或者您已经对第一种安装方法熟练掌握了,建议直接使用这种方式。
在线安装有多简单?简单到只需要一个操作。在保证电脑能联网的前提下,打开Anaconda自带的Prompt,然后键入:
pip install scikit-image
然后呢?然后就没有然后了,等不到半分钟就提示安装成功了。是不是非常简单?
(3)验证安装是否成功
如何验证是否成功安装了scikit-image呢?在此介绍一种简单快捷的方法。
打开cmd,在命令行窗口,启动Python,然后键入以下语句:
import skimage
然后屏幕上没有任何报错的显示,就说明已经正确将Skimage工具包载入到了内存,即sci-kit image成功安装了。
1.2 其他配置
这部分的配置不是必需的。但如果你和我一样,喜欢用Jupyter Notebook(以下简称Notebook)整理撰写交互式笔记,则建议看一下下面的内容。
1.2.1 Jupyter Notebook的设置
有关Jupyter Notebook的配置很多,在此主要介绍如何修改Jupyter Notebook默认的工作路径。
大家刚开始使用Jupyter notebook时,可能都很有类似的困惑,即点击Jupyter Notebook图标,会跳转到一个很奇怪的路径下。如果不做修改,我们边界的notebook文件都默认存在 该路径下,这很不方便。因此,在使用notebook时,通常先完成其默认工作路径的修改工作。
修改Notebook默认工作路径的方法有很多,但因为Jupyter Notebook的安装方式,以及不同系统的配置存在差异,不一定所有的方法都有效,在此介绍一种面向Windows系统,并基于Anaconda安装Jupyter Notebook的方式。
第一步:生成配置文件
打开 Anaconda Prompt,键入:
jupyter notebook --generate-config
该命令的作用是生成 Jupyter notebook 的配置文件“Jupyter_notebook_config.py”,其存放路径通常是“C:\Users\Administrator\.jupyter\ ”
如果是第一次运行,会直接生成这个文件。如果曾经运行过这个命令,则会提示是否覆盖原来的文件。
第二步:修改配置文件
打开jupyter_notebook_config.py文件。搜索找到该变量所在行,c.NotebookApp.notebook_dir,将新的路径赋值给这个变量,并删除这一行前面的“#”,并保存。如下图所示:
注意:
- 一定要确保删除 “#”,取消这一行的注释模式。
- 这一行代码前不能有空格,且路径一定要是已经存在的,否则会闪退。且路径要用英文单引号括起来。
第三步:修改快捷方式属性
参考下图,找到Jupyter Notebook的快捷方式,右键打开属性,将“目标”最后面的 “%USERPROFILE%” 删除就可以了。
此时,再次点击“Jupyter notebook”图标,会自动转到刚才设置的路径下。
除此之外,还有其他一些有关Jupyter Notebook的设置。由于和本教程关系不大,在此不再赘述,请读者自行查阅相关资源。
1.2.2 SciPy.ndimage
Scikit-Image作为SciPy的一个子库,有部分基础的功能并不能单独实现,比如图像处理领域常用的卷积操作,以及频域的FFT等等。这些功能可调用SciPy中的其他子库来实现,比如,后面章节中常用到的ndimage库。
在安装了Anaconda后,ndimage模块集成在了SciPy中,因此不需要单独安装。可用以下语句验证是否正常安装该模块。
from scipy import ndimage
如果系统没有给出任何错误提示,则说明已安装了该模块。
1.2.3 Matplotlib配置
对于大部分人和大部分应用场景,Matplotlib是Python中最常用的2D绘图扩展包,兼顾强大的功能和易于使用的优点。
为了方便大家快速掌握相关技巧,这部分我们采用Q&A的方式来组织。
Q1:如何内嵌式显示处理结果?
比如我们想将处理之后的图像或者波形图,直接在代码下方显示。这样就能实现在同一个窗口中同时显示代码和结果,并方便的观测不同的参数对处理结果的影响。
A1:键入以下代码,原因不解释。
%matplotlib inline
Q2:如何提高显示图像清晰度?
使用Matplotlib显示图形/图像时,其分辨率(ppi)较低,导致最终呈现的图形/图像不够清晰。
那么,如何提高Matplotlib显示图形/图像的ppi呢?
A2:键入以下代码,原因不解释。
%config InlineBackend.figure_format = 'retina'
通常,上述两行设置是配套使用的。
Q3:如何设置标注文字字体?
如果不单独设置,Matplotlib将使用默认的系统字体作为处理结果的标注字体,但有时很难看。
A3:键入以下代码,将字体设置为楷体(标识符为KaiTi),原因不解释。
plt.rcParams['font.sans-serif'] = 'KaiTi'
除了上述设置之外,还有许多更细致的设置,在此不再一一列出,大家自己百度吧。
(本节初稿完成时间:2024-1-24)
(第一次修订完成时间:2024-2-29)
(未完待续,欢迎对DIP+python算法开发感兴趣的初学者,尤其是相关专业本科和低年级研究生关注,本专栏完将持续更新,总篇数不会少于100篇,每篇不会少于3000字,专栏完成之前(估计至少半年)完全免费阅读,敬请关注)