[Python从零到壹] 三十三.图像处理基础篇之什么是图像处理和OpenCV配置
欢迎大家来到“Python从零到壹”,在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界。所有文章都将结合案例、代码和作者的经验讲解,真心想把自己近十年的编程经验分享给大家,希望对您有所帮助,文章中不足之处也请海涵。Python系列整体框架包括基础语法10篇、网络爬虫30篇、可视化分析10篇、机器学习20篇、大数据分析20篇、图像识别30篇、人工智能40篇、Python安全20篇、其他技巧10篇。您的关注、点赞和转发就是对秀璋最大的支持,知识无价人有情,希望我们都能在人生路上开心快乐、共同成长。
该系列文章主要讲解Python OpenCV图像处理和图像识别知识,前期主要讲解图像处理基础知识、OpenCV基础用法、常用图像绘制方法、图像几何变换等,中期讲解图像处理的各种运算,包括图像点运算、形态学处理、图像锐化、图像增强、图像平滑等,后期研究图像识别、图像分割、图像分类、图像特效处理以及图像处理相关应用。
第一篇文章作为整个系列的引子,将介绍什么是图像处理,图像处理的基础知识,Python语言的优势和OpenCV基础概述。希望文章对您有所帮助,如果有不足之处,还请海涵。接下来,让我们开启整个系列的学习吧!
下载地址:
前文赏析:
第一部分 基础语法
第二部分 网络爬虫
第三部分 数据分析和机器学习
- [Python从零到壹] 十九.可视化分析之热力图和箱图绘制及应用详解
- [Python从零到壹] 二十.可视化分析之Seaborn绘图万字详解
- [Python从零到壹] 二十一.可视化分析之Pyechart绘图万字详解
- [Python从零到壹] 二十二.可视化分析之OpenGL绘图万字详解
- [Python从零到壹] 二十三.十大机器学习算法之决策树分类分析详解(1)
- [Python从零到壹] 二十四.十大机器学习算法之KMeans聚类分析详解(2)
- [Python从零到壹] 二十五.十大机器学习算法之KNN算法及图像分类详解(3)
- [Python从零到壹] 二十六.十大机器学习算法之朴素贝叶斯算法及文本分类详解(4)
- [Python从零到壹] 二十七.十大机器学习算法之线性回归算法分析详解(5)
- [Python从零到壹] 二十八.十大机器学习算法之SVM算法分析详解(6)
- [Python从零到壹] 二十九.十大机器学习算法之随机森林算法分析详解(7)
- [Python从零到壹] 三十.十大机器学习算法之逻辑回归算法及恶意请求检测应用详解(8)
- [Python从零到壹] 三十一.十大机器学习算法之Boosting和AdaBoost应用详解(9)
- [Python从零到壹] 三十二.十大机器学习算法之层次聚类和树状图聚类应用详解(10)
第四部分 Python图像处理基础
- [Python从零到壹] 三十三.图像处理基础篇之什么是图像处理和OpenCV配置
第五部分 Python图像运算和图像增强
第六部分 Python图像识别和图像处理经典案例
第七部分 NLP与文本挖掘
第八部分 人工智能入门知识
第九部分 网络攻防与AI安全
第十部分 知识图谱构建实战
扩展部分 人工智能高级案例
数字图像处理(Digital Image Processing)又称为计算机图像处理(Computer Image Processing),旨在将图像信号转换成数字信号并利用计算机对其进行处理的过程。常见的图像处理方法如图1-1所示。
数字图像处理作为一门学科大约形成于20世纪60年代初期。早期的图像处理的目的是改善图像的质量,常用的处理方法包括图像增强、复原、编码、压缩等。随着图像处理技术的深入发展,从70年代中期开始,计算机技术和人工智能、思维科学研究迅速发展,数字图像处理向更高、更深层次发展。人们已开始研究如何用计算机系统解释图像,实现类似人类视觉系统理解外部世界,这被称为图像理解或计算机视觉。现如今,图像处理取得了不少重要的研究成果,其在许多领域(如通信、气象、生物、医学、物理、经济、文化等)已经得到广泛的应用[1-3]。
图像处理系列主要包括三部分,分别是:
图像都是由像素(pixel)构成的,像素表示为图像中的小方格,这些小方格都有一个明确的位置和被分配的色彩数值,而这些小方格的颜色和位置就决定该图像所呈现出来的样子。像素是图像中的最小单位,每一个点阵图像包含了一定量的像素,这些像素决定图像在屏幕上所呈现的大小。图1-2表示一张由像素组成的叮当猫。
图像通常分为二值图像、灰度图像和彩色图像,图3-2展示了图像处理经典“Lena”图的各种图像。
(1)二值图像
二值图像又称为黑白图像,图像中任何一个点非黑即白,要么为白色(像素为255),要么为黑色(像素为0)。将灰度图像转换为二值图像的过程,常通过依次遍历判断实现,如果像素大于127则设置为255,否则设置为0。如图1-4所示,一幅二值图像对应的矩阵。
(2)灰度图像
灰度图像是指每个像素的信息由一个量化的灰度级来描述的图像,没有彩色信息,如图1-5所示。改变像素矩阵的RGB值可以实现将彩色图转变为灰度图。常见的方法是将灰度划分为256种不同的颜色,将原来的RGB(R,G,B)中的R、G、B统一替换为Gray,形成新的颜色RGB(Gray,Gray,Gray),即灰度图。将彩色图像转换为灰度图是图像处理的最基本预处理操作。后面的文章将详细介绍不同灰度转换方法的实现过程。
(3)彩色图像
彩色图像是RGB图像,RGB表示红、绿、蓝三原色,计算机里所有颜色都是三原色不同比例组成的,即三色通道。RGB (Red红色,Green 绿色,Blue 蓝色),是根据人眼识别的颜色而定义的空间,可用于表示大部分颜色,也是图像处理中最基本、最常用、面向硬件的颜色空间,是一种光混合的体系。图1-6展示了图像中某一点像素(205,89,68)所对应三原色像的素值,其中R表示红色分量、G表示绿色分量、B表示蓝色分量[4]。
Python是Guido van Rossum在1989年开发的一门语言,它既是解释性编程语言,又是面向对象的语言,其操作性和可移植性高,被广泛应用于数据挖掘、图像处理、人工智能领域。Python具有语言清晰、容易学习、高效率的数据结构、丰富且功能强大的第三方包等优势。同时,Python语言含有高效率的数据结构,它和其他的面向对象编程语言一样,具有参数、列表表达式、函数、流程控制(循环与分支)、类、对象等功能。Python优雅的语法以及解释性的本质,使其成为一种能在多种功能、多种平台上撰写脚本及快速开发的理想语言[5]。
Python的具体优势如下:
- 语法清晰,代码友好,易读性好
- 应用广泛,具有大量的第三方库支持,包括机器学习、人工智能等
- Python可移植性强,易于操作各种存储数据的文本文件和数据库
- Python是一门面向对象语言,支持开源思想
本系列主要通过Python调用OpenCV、Matplotlib、Numpy、Sklearn等第三方包实现图像处理,其优雅清晰的语法结构减少了读者的负担,从而大大增强程序的质量。该系列文章采用Python3.7版本实现,并贯穿整个系列的所有代码。同时结合官方的Python解释器进行详细介绍,作者认为官方的解释器能让读者更好地学习基础语法知识,更好地掌握图像处理算法的精髓,从而为后续自己的需求应用提供最大的帮助。图1-7是官方下载地址[6]。
读者可以结合本机的操作系统选择适合的版本,比如作者选择了Windows操作系统下的“Python 3.7.4”版本。
接着双击“python-3.7.4-amd64.exe”软件进行安装,安装过程选择指定路径,按照Python安装向导,点击“Next”按钮即可。
Python提供了集成开发环境(Python Integrated Development Environment,IDLE)供读者编写脚本文件,图1-10展示了IDLE显示print(“Hello World”)代码的效果。
在IDLE界面中点击“File”中“New File”新建文件,并另存为py文件,如“1-1-test.py”,然后编写相关代码并点击运行“Run Module F5”按钮,即可运行Python脚本文件。
# -*- coding:utf-8 -*-
print(2)
print("Hello World")
x = 2
y = 4
z = x + y
print(x)
print(y)
print(z)
print(x, y, z)
输出结果如图1-11所示。
这里作者仅简单介绍了Python的优势和安装过程,如果您是一名初学者,建议好好学习Python的基础知识,包括基础语法、数据类型、条件语句、循环语句、函数定义、类定义、面向对象等知识。后续图像处理文章遇到相关知识点,作者也会简要介绍。
OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac 操作系统上。它是一个由C/C++语言编写而成的轻量级并且高效的库,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法[7]。其官方地址为:https://opencv.org/。
该系列文章主要使用Python调用OpenCV2库函数进行图像处理操作,首先告知读者如何在Python编程环境下安装OpenCV库。OpenCV安装主要通过pip指令进行。如图1-12所示,在命令提示符CMD环境下,通过cd命令进入Python安装目录的Scripts文件夹下,再调用下列命令安装。
- pip install opencv-python
当OpenCV扩展包安装成功后,在Python中输入“import cv2”语句导入该扩展包,测试安装是否成功,如果没有异常报错即安装成功,如图1-13所示。
最后,补充一个简答的图像显示案例,算是这篇文章的结尾。接下来,我们将正式进入“Python图像处理及识别”系列,将从各个方面详细介绍图像处理的相关知识。
# -*- coding:utf-8 -*-
import cv2
#读取图片
img = cv2.imread("huawei.png")
#显示图像
cv2.imshow("Demo", img)
#等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()
显示效果如图1-14所示。
写到这里,这篇文章就介绍结束。本文主要分享了什么是图像处理、图像处理基础知识、Python语言和OpenCV基础知识。通过这篇文章,初学者可以学会如何安装相关的程序,开启整个系列的学习。同时,大家在学习该系列文章时,一定要自己动手实现所有代码和案例,这才能提升您的编程能力。
感谢在求学路上的同行者,不负遇见,勿忘初心。
感恩能与大家在华为云遇见!
希望能与大家一起在华为云社区共同成长,原文地址:https://blog.csdn.net/Eastmount/article/details/122642008
(By:娜璋之家 Eastmount 2022-02-28 夜于武汉)
参考文献:
- [1]冈萨雷斯. 数字图像处理(第3版)[M]. 北京:电子工业出版社, 2013.
- [2]阮秋琦. 数字图像处理学(第3版)[M]. 北京:电子工业出版社,2008.
- [3]百度百科. 图像处理[EB/OL].(2021-12-15). https://baike.baidu.com/item/图像处理/294902.
- [4]Eastmount. [Python图像处理] 一.图像处理基础知识及OpenCV入门函数[EB/OL]. (2018-08-16). https://blog.csdn.net/Eastmount/article/details/81748802.
- [5]杨秀璋, 颜娜. Python网络数据爬取及分析从入门到精通(分析篇)[M]. 北京:北京航天航空大学出版社, 2018.
- [6]Python官网. Welcome to Python.org[EB/OL]. (2022-11-10). https://www.python.org.
- [7]毛星云, 冷雪飞. OpenCV3编程入门[M]. 北京:电子工业出版社, 2015.
- 点赞
- 收藏
- 关注作者
评论(0)