[Python从零到壹] 三十三.图像处理基础篇之什么是图像处理和OpenCV配置

欢迎大家来到“Python从零到壹”,在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界。所有文章都将结合案例、代码和作者的经验讲解,真心想把自己近十年的编程经验分享给大家,希望对您有所帮助,文章中不足之处也请海涵。Python系列整体框架包括基础语法10篇、网络爬虫30篇、可视化分析10篇、机器学习20篇、大数据分析20篇、图像识别30篇、人工智能40篇、Python安全20篇、其他技巧10篇。您的关注、点赞和转发就是对秀璋最大的支持,知识无价人有情,希望我们都能在人生路上开心快乐、共同成长。

该系列文章主要讲解Python OpenCV图像处理和图像识别知识,前期主要讲解图像处理基础知识、OpenCV基础用法、常用图像绘制方法、图像几何变换等,中期讲解图像处理的各种运算,包括图像点运算、形态学处理、图像锐化、图像增强、图像平滑等,后期研究图像识别、图像分割、图像分类、图像特效处理以及图像处理相关应用。

第一篇文章作为整个系列的引子,将介绍什么是图像处理,图像处理的基础知识,Python语言的优势和OpenCV基础概述。希望文章对您有所帮助,如果有不足之处,还请海涵。接下来,让我们开启整个系列的学习吧!

文章目录

  • 一.什么是图像处理
  • 二.图像处理基础
  • 三.Python语言
  • 四.OpenCV安装和基础
  • 五.总结

下载地址:

  • https://github.com/eastmountyxz/Python-zero2one

前文赏析:

第一部分 基础语法

  • [Python从零到壹] 一.为什么我们要学Python及基础语法详解
  • [Python从零到壹] 二.语法基础之条件语句、循环语句和函数
  • [Python从零到壹] 三.语法基础之文件操作、CSV文件读写及面向对象

第二部分 网络爬虫

  • [Python从零到壹] 四.网络爬虫之入门基础及正则表达式抓取博客案例
  • [Python从零到壹] 五.网络爬虫之BeautifulSoup基础语法万字详解
  • [Python从零到壹] 六.网络爬虫之BeautifulSoup爬取豆瓣TOP250电影详解
  • [Python从零到壹] 七.网络爬虫之Requests爬取豆瓣电影TOP250及CSV存储
  • [Python从零到壹] 八.数据库之MySQL基础知识及操作万字详解
  • [Python从零到壹] 九.网络爬虫之Selenium基础技术万字详解(定位元素、常用方法、键盘鼠标操作)
  • [Python从零到壹] 十.网络爬虫之Selenium爬取在线百科知识万字详解(NLP语料构造必备技能)

第三部分 数据分析和机器学习

  • [Python从零到壹] 十一.数据分析之Numpy、Pandas、Matplotlib和Sklearn入门知识万字详解(1)
  • [Python从零到壹] 十二.机器学习之回归分析万字总结全网首发(线性回归、多项式回归、逻辑回归)
  • [Python从零到壹] 十三.机器学习之聚类分析万字总结全网首发(K-Means、BIRCH、层次聚类、树状聚类)
  • [Python从零到壹] 十四.机器学习之分类算法三万字总结全网首发(决策树、KNN、SVM、分类算法对比)
  • [Python从零到壹] 十五.文本挖掘之数据预处理、Jieba工具和文本聚类万字详解
  • [Python从零到壹] 十六.文本挖掘之词云热点与LDA主题分布分析万字详解
  • [Python从零到壹] 十七.可视化分析之Matplotlib、Pandas、Echarts入门万字详解
  • [Python从零到壹] 十八.可视化分析之Basemap地图包入门详解
  • [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安全

第十部分 知识图谱构建实战

扩展部分 人工智能高级案例

作者新开的“娜璋AI安全之家”将专注于Python和安全技术,主要分享Web渗透、系统安全、人工智能、大数据分析、图像识别、恶意代码检测、CVE复现、威胁情报分析等文章。虽然作者是一名技术小白,但会保证每一篇文章都会很用心地撰写,希望这些基础性文章对你有所帮助,在Python和安全路上与大家一起进步。


一.什么是图像处理

数字图像处理(Digital Image Processing)又称为计算机图像处理(Computer Image Processing),旨在将图像信号转换成数字信号并利用计算机对其进行处理的过程。常见的图像处理方法如图1-1所示。

[Python从零到壹] 三十三.图像处理基础篇之什么是图像处理和OpenCV配置_第1张图片

数字图像处理作为一门学科大约形成于20世纪60年代初期。早期的图像处理的目的是改善图像的质量,常用的处理方法包括图像增强、复原、编码、压缩等。随着图像处理技术的深入发展,从70年代中期开始,计算机技术和人工智能、思维科学研究迅速发展,数字图像处理向更高、更深层次发展。人们已开始研究如何用计算机系统解释图像,实现类似人类视觉系统理解外部世界,这被称为图像理解或计算机视觉。现如今,图像处理取得了不少重要的研究成果,其在许多领域(如通信、气象、生物、医学、物理、经济、文化等)已经得到广泛的应用[1-3]。

图像处理系列主要包括三部分,分别是:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


二.图像处理基础

图像都是由像素(pixel)构成的,像素表示为图像中的小方格,这些小方格都有一个明确的位置和被分配的色彩数值,而这些小方格的颜色和位置就决定该图像所呈现出来的样子。像素是图像中的最小单位,每一个点阵图像包含了一定量的像素,这些像素决定图像在屏幕上所呈现的大小。图1-2表示一张由像素组成的叮当猫。

[Python从零到壹] 三十三.图像处理基础篇之什么是图像处理和OpenCV配置_第2张图片

图像通常分为二值图像、灰度图像和彩色图像,图3-2展示了图像处理经典“Lena”图的各种图像。

[Python从零到壹] 三十三.图像处理基础篇之什么是图像处理和OpenCV配置_第3张图片

(1)二值图像
二值图像又称为黑白图像,图像中任何一个点非黑即白,要么为白色(像素为255),要么为黑色(像素为0)。将灰度图像转换为二值图像的过程,常通过依次遍历判断实现,如果像素大于127则设置为255,否则设置为0。如图1-4所示,一幅二值图像对应的矩阵。

[Python从零到壹] 三十三.图像处理基础篇之什么是图像处理和OpenCV配置_第4张图片

(2)灰度图像
灰度图像是指每个像素的信息由一个量化的灰度级来描述的图像,没有彩色信息,如图1-5所示。改变像素矩阵的RGB值可以实现将彩色图转变为灰度图。常见的方法是将灰度划分为256种不同的颜色,将原来的RGB(R,G,B)中的R、G、B统一替换为Gray,形成新的颜色RGB(Gray,Gray,Gray),即灰度图。将彩色图像转换为灰度图是图像处理的最基本预处理操作。后面的文章将详细介绍不同灰度转换方法的实现过程。

[Python从零到壹] 三十三.图像处理基础篇之什么是图像处理和OpenCV配置_第5张图片

(3)彩色图像
彩色图像是RGB图像,RGB表示红、绿、蓝三原色,计算机里所有颜色都是三原色不同比例组成的,即三色通道。RGB (Red红色,Green 绿色,Blue 蓝色),是根据人眼识别的颜色而定义的空间,可用于表示大部分颜色,也是图像处理中最基本、最常用、面向硬件的颜色空间,是一种光混合的体系。图1-6展示了图像中某一点像素(205,89,68)所对应三原色像的素值,其中R表示红色分量、G表示绿色分量、B表示蓝色分量[4]。

[Python从零到壹] 三十三.图像处理基础篇之什么是图像处理和OpenCV配置_第6张图片


三.Python语言

Python是Guido van Rossum在1989年开发的一门语言,它既是解释性编程语言,又是面向对象的语言,其操作性和可移植性高,被广泛应用于数据挖掘、图像处理、人工智能领域。Python具有语言清晰、容易学习、高效率的数据结构、丰富且功能强大的第三方包等优势。同时,Python语言含有高效率的数据结构,它和其他的面向对象编程语言一样,具有参数、列表表达式、函数、流程控制(循环与分支)、类、对象等功能。Python优雅的语法以及解释性的本质,使其成为一种能在多种功能、多种平台上撰写脚本及快速开发的理想语言[5]。

Python的具体优势如下:

  • 语法清晰,代码友好,易读性好
  • 应用广泛,具有大量的第三方库支持,包括机器学习、人工智能等
  • Python可移植性强,易于操作各种存储数据的文本文件和数据库
  • Python是一门面向对象语言,支持开源思想

本系列主要通过Python调用OpenCV、Matplotlib、Numpy、Sklearn等第三方包实现图像处理,其优雅清晰的语法结构减少了读者的负担,从而大大增强程序的质量。该系列文章采用Python3.7版本实现,并贯穿整个系列的所有代码。同时结合官方的Python解释器进行详细介绍,作者认为官方的解释器能让读者更好地学习基础语法知识,更好地掌握图像处理算法的精髓,从而为后续自己的需求应用提供最大的帮助。图1-7是官方下载地址[6]。

[Python从零到壹] 三十三.图像处理基础篇之什么是图像处理和OpenCV配置_第7张图片

读者可以结合本机的操作系统选择适合的版本,比如作者选择了Windows操作系统下的“Python 3.7.4”版本。

[Python从零到壹] 三十三.图像处理基础篇之什么是图像处理和OpenCV配置_第8张图片

接着双击“python-3.7.4-amd64.exe”软件进行安装,安装过程选择指定路径,按照Python安装向导,点击“Next”按钮即可。

[Python从零到壹] 三十三.图像处理基础篇之什么是图像处理和OpenCV配置_第9张图片

Python提供了集成开发环境(Python Integrated Development Environment,IDLE)供读者编写脚本文件,图1-10展示了IDLE显示print(“Hello World”)代码的效果。

[Python从零到壹] 三十三.图像处理基础篇之什么是图像处理和OpenCV配置_第10张图片

在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从零到壹] 三十三.图像处理基础篇之什么是图像处理和OpenCV配置_第11张图片

这里作者仅简单介绍了Python的优势和安装过程,如果您是一名初学者,建议好好学习Python的基础知识,包括基础语法、数据类型、条件语句、循环语句、函数定义、类定义、面向对象等知识。后续图像处理文章遇到相关知识点,作者也会简要介绍。


四.OpenCV安装和基础

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

[Python从零到壹] 三十三.图像处理基础篇之什么是图像处理和OpenCV配置_第12张图片

当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配置_第13张图片


五.总结

写到这里,这篇文章就介绍结束。本文主要分享了什么是图像处理、图像处理基础知识、Python语言和OpenCV基础知识。通过这篇文章,初学者可以学会如何安装相关的程序,开启整个系列的学习。同时,大家在学习该系列文章时,一定要自己动手实现所有代码和案例,这才能提升您的编程能力。

感谢在求学路上的同行者,不负遇见,勿忘初心。这周的留言感慨~

十二年CSDN的博客分享,如果要说分享最让我开心的是什么?不是传道,不是授业,也不是解惑,而是接下来这类事。这些年已经陆续鼓励了一些朋友当老师,而昨天得知这一位博友真的去到新疆南疆成为了一名小学老师,我很是感动,是真的感动,六年前我曾鼓励他如果想,就放弃高额工资的互联网大厂,去做自己想做的,没想到已经当了四年老师。又当爹又当妈,国语普及,文化教育,这里面的艰辛不是一两句道得清,除了佩服就是鼓励。
正如你说的一样,“一辈子总得做点有意义的事情,生命实在太短暂,一定要活得积极、正面”。或许,这也是我在CSDN分享博客的最大意义,再比如云南那位老友的留言,“农村的孩子下雨没有伞,只能拼命奔跑”,希望你以后也能成为一名教师,感恩有你们,感谢有你们。我也希望自己早日毕业回到家乡,花上三四十年做好两件事,一是认真教书,二是将少数民族文物抢救和文字语音保护做好,也鼓励更多人一起加入进来。自己虽然很菜吧,但还是有一些喜欢的事,尤其陪伴爱的人,挺好,爱你们喔。2022年继续加油,在CSDN分享更高质量的博客和专栏。

在这里插入图片描述

(By:娜璋之家 Eastmount 2022-01-22 夜于贵阳 https://blog.csdn.net/Eastmount )


参考文献:

  • [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.

你可能感兴趣的:(Python从零到壹,Python学习系列,python,opencv,图像处理,Python从零到壹)