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

该系列文章主要讲解Python OpenCV图像处理和图像识别知识,前期主要讲解图像处理基础知识、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从零到壹] 三十四.OpenCV入门详解——显示读取修改及保存图像
  • [Python从零到壹] 三十五.图像处理基础篇之OpenCV绘制各类几何图形
  • [Python从零到壹] 三十六.图像处理基础篇之图像算术与逻辑运算详解
  • [Python从零到壹] 三十七.图像处理基础篇之图像融合处理和ROI区域绘制
  • [Python从零到壹] 三十八.图像处理基础篇之图像几何变换(平移缩放旋转)
  • [Python从零到壹] 三十九.图像处理基础篇之图像几何变换(镜像仿射透视)
  • [Python从零到壹] 四十.图像处理基础篇之图像量化处理
  • [Python从零到壹] 四十一.图像处理基础篇之图像采样处理

第五部分 Python图像运算和图像增强

第六部分 Python图像识别和图像处理经典案例

第七部分 NLP与文本挖掘

第八部分 人工智能入门知识

第九部分 网络攻防与AI安全

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

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

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


一.图像采样处理原理

图像采样(Image Sampling)处理是将一幅连续图像在空间上分割成M×N个网格,每个网格用一个亮度值或灰度值来表示,其示意图如图9-1所示。

图像采样的间隔越大,所得图像像素数越少,空间分辨率越低,图像质量越差,甚至出现马赛克效应;相反,图像采样的间隔越小,所得图像像素数越多,空间分辨率越高,图像质量越好,但数据量会相应的增大。图9-2展示了不同采样间隔的“Lena”图,其中图(a)为原始图像,图(b)为128×128的图像采样效果,图©为64×64的图像采样效果,图(d)为32×32的图像采样效果,图(e)为16×16的图像采样效果,图(f)为8×8的图像采样效果[1-3]。


二.图像采样实现

下面讲述Python图像采样处理相关代码操作。其核心流程是建立一张临时图片,设置需要采样的区域大小(如16×16),接着循环遍历原始图像中所有像素点,采样区域内的像素点赋值相同(如左上角像素点的灰度值),最终实现图像采样处理。

# -*- coding: utf-8 -*-
# By:Eastmount
import cv2
import numpy as np
import matplotlib.pyplot as plt#读取原始图像
img = cv2.imread('lena-hd.png')#获取图像高度和宽度
height = img.shape[0]
width = img.shape[1]#采样转换成16*16区域
numHeight = int(height/16)
numWidth = int(width/16)#创建一幅图像
new_img = np.zeros((height, width, 3), np.uint8)#图像循环采样16*16区域
for i in range(16):#获取Y坐标y = i*numHeightfor j in range(16):#获取X坐标x = j*numWidth#获取填充颜色 左上角像素点b = img[y, x][0]g = img[y, x][1]r = img[y, x][2]#循环设置小区域采样for n in range(numHeight):for m in range(numWidth):new_img[y+n, x+m][0] = np.uint8(b)new_img[y+n, x+m][1] = np.uint8(g)new_img[y+n, x+m][2] = np.uint8(r)#显示图像
cv2.imshow("src", img)
cv2.imshow("Sampling", new_img)#等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()

其输出结果如图9-3所示,它将灰度图像采样成16×16的区域。

同样,可以对彩色图像进行采样处理,下面的代码将“小珞珞”的图像采样处理成8×8的马赛克区域。

# -*- coding: utf-8 -*-
# By:Eastmount
import cv2
import numpy as np
import matplotlib.pyplot as plt#读取原始图像
img = cv2.imread('luo.png')#获取图像高度和宽度
height = img.shape[0]
width = img.shape[1]#采样转换成8×8区域
numHeight = int(height/8)
numwidth = int(width/8)#创建一幅图像
new_img = np.zeros((height, width, 3), np.uint8)#图像循环采样8*8区域
for i in range(8):#获取Y坐标y = i*numHeightfor j in range(8):#获取X坐标x = j*numwidth#获取填充颜色 左上角像素点b = img[y, x][0]g = img[y, x][1]r = img[y, x][2]#循环设置小区域采样for n in range(numHeight):for m in range(numwidth):new_img[y+n, x+m][0] = np.uint8(b)new_img[y+n, x+m][1] = np.uint8(g)new_img[y+n, x+m][2] = np.uint8(r)#显示图像
cv2.imshow("src", img)
cv2.imshow("Sampling", new_img)#等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()

其输出结果如图9-4所示,它将彩色图像采样成8×8的区域。

但上述代码存在一个问题,当图像的长度和宽度不能被采样区域整除时,输出图像的最右边和最下边的区域没有被采样处理。这里推荐读者做个求余运算,将不能整除部分的区域也进行相应的采样处理。


三.图像局部采样处理

前面讲述的代码是对整幅图像进行采样处理,那么如何对图像的局部区域进行马赛克处理呢?下面的代码就实现了该功能。当鼠标按下时,它能够给鼠标拖动的区域打上马赛克,并按下“s”键保存图像至本地。

# -*- coding: utf-8 -*-
# By:Eastmount
import cv2
import numpy as np
import matplotlib.pyplot as plt#读取原始图像
im = cv2.imread('luo.png', 1)#设置鼠标左键开启
en = False#鼠标事件
def draw(event, x, y, flags, param):global en#鼠标左键按下开启en值if event==cv2.EVENT_LBUTTONDOWN:en = True#鼠标左键按下并且移动elif event==cv2.EVENT_MOUSEMOVE and flags==cv2.EVENT_LBUTTONDOWN:#调用函数打马赛克if en:drawMask(y,x)#鼠标左键弹起结束操作elif event==cv2.EVENT_LBUTTONUP:en = False#图像局部采样操作
def drawMask(x, y, size=10):#size*size采样处理m = int(x / size * size)n = int(y / size * size)print(m, n)#10*10区域设置为同一像素值for i in range(size):for j in range(size):im[m+i][n+j] = im[m][n]#打开对话框
cv2.namedWindow('image')#调用draw函数设置鼠标操作
cv2.setMouseCallback('image', draw)#循环处理
while(1):cv2.imshow('image', im)#按ESC键退出if cv2.waitKey(10)&0xFF==27:break#按s键保存图片elif cv2.waitKey(10)&0xFF==115:cv2.imwrite('sava.png', im)#退出窗口
cv2.destroyAllWindows()

其输出结果如图9-5所示,它将人物的脸部进行马赛克处理。


四.总结

本文主要讲解了图像的采样处理,从基本概念到操作,再到扩展进行全方位讲解,并且补充了局部马赛克采样处理案例。该部分的知识点能够将生活中的图像转换为数字图像,更好地为后续的图像处理提供帮助。

最近寒假日更,为了感谢读者。同时感谢在求学路上的同行者,不负遇见,勿忘初心。图像处理系列主要包括三部分,分别是:

祝大家新年快乐,虎年大吉,阖家幸福,万事如意,小珞珞给大家拜年了。亲情是真的很美,很治愈。希望小珞珞和他妈妈能开心每一天,全家人身体健康。小珞珞这小样子可爱极了,爱你们喔!

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


参考文献:

  • [1]冈萨雷斯著. 数字图像处理(第3版)[M]. 北京:电子工业出版社,2013.
  • [2]Eastmount. [Python图像处理] 三十.图像量化及采样处理万字详细总结[EB/OL]. (2020-11-10). https://blog.csdn.net/Eastmount/article/details/109605161.
  • [3]Eastmount. [数字图像处理] 三.MFC实现图像灰度、采样和量化功能详解[EB/OL]. (2015-05-28). https://blog.csdn.net/eastmount/article/details/46010637.

[Python从零到壹] 四十一.图像处理基础篇之图像采样处理相关推荐

  1. [Python从零到壹] 四十.图像处理基础篇之图像量化处理

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  2. [Python从零到壹] 三十七.图像处理基础篇之图像融合处理和ROI区域绘制

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

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

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  4. [Python从零到壹] 四十五.图像增强及运算篇之图像灰度非线性变换详解

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  5. [Python从零到壹] 四十九.图像增强及运算篇之顶帽运算和底帽运算

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  6. [Python从零到壹] 五十一.图像增强及运算篇之图像灰度直方图对比分析万字详解

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  7. [Python从零到壹] 四十七.图像增强及运算篇之腐蚀和膨胀详解

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  8. [Python从零到壹] 六十一.图像识别及经典案例篇之基于纹理背景和聚类算法的图像分割

    祝大家新年快乐,阖家幸福,健康快乐! 欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所 ...

  9. [Python从零到壹] 四十八.图像增强及运算篇之形态学开运算、闭运算和梯度运算

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

最新文章

  1. 设置MySQL服务的字符集为uft8
  2. Silverlight Training
  3. 《前端JavaScript重点》学习笔记 1-5
  4. MySQL高可用--MGR入门(2)组复制监控常用相关表
  5. 使用Maven把项目打包成可执行jar在Idea里
  6. 车贷P2P平台设计市场需求文档(MRD)
  7. Linux进程相关的一些笔记
  8. 一个按钮会随着鼠标移动而变化的小工具
  9. 开发者的实用 Vim 插件(二)
  10. java8实现Joiner:数组集合转换字符串
  11. 大数据服务器环境准备(三台服务)
  12. 复利思维,静待时间的玫瑰慢慢绽放
  13. Python办公自动化之文件读写操作与Excel,csv,PDF文件
  14. bin文件合并工具(UBIN)使用方法
  15. 《黑客秘笈——渗透测试实用指南(第2版)》—第2章2.3节外部或内部主动式信息搜集...
  16. IDA pro与x64dbg地址对齐
  17. 殿影酒店即将开业,推出电影和酒店的跨界创新模式
  18. 怎么提高公文写作水平?原来这就是公文参考模版
  19. Tomcat9最大并发连接数的修改方法
  20. win 2016 hyper-v安装cactiez报错

热门文章

  1. codeforces 1100E-Andrew and Taxi
  2. scrapy之settings参数
  3. django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE的解决办法(转)...
  4. Java Eclipse和MyEclipse快捷键
  5. Python 爬起数据时 'gbk' codec can't encode character '\xa0' 的问题
  6. (转)生产者/消费者问题的多种Java实现方式 (待整理)
  7. centos下redis安装
  8. JAVA vs C++之速度—
  9. 知识库 IIS6.0中Response 对象 错误 ASP 0251 : 80004005
  10. 远程机房监控设计方案