版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单元2认识数字图像OpenCV数字图像处理目录/CONENTS像素和分辨率颜色空间和通道图像矩阵拓展阅读01020304像素和分辨率01像素像素和分辨率像素(Pixel)是图像的最小单位,是“图像元素”的缩写每个像素是一个小的方形区域,包含特定的颜色信息像素是构成图像的基本单元,图像的细节和清晰度由像素的数量和排列决定分辨率像素和分辨率分辨率是指图像中像素的总数,是图像对细节的分辨能力,通常用“宽度×高度”表示。分辨率越高表示图像质量越好,越能表现出更多的细节分辨率小的图像由几百个像素组成,分辨率大的图像由几万甚至数亿个像素组成
上图的分辨率为20列18行,下图分辨率为2000列1800行,两个图像中分别有360个像素以及360万个像素上图可以看出,当分辨率小的图像放大以后,每个像素由一个点变成了一个方块,分辨率小的左图无法展示分辨率比它大1万倍的右图中的细节。像素和分辨率图像的分辨率可以通过图像矩阵的shape变量查看importcv2img
=cv2.imread('imgs/flower.png',1)print(img.shape)#显示三维彩色图像矩阵的行、列和通道数img0=img[:,:,0]print(img0.shape)#显示二维灰度图像矩阵的行和列上述程序运行结果是:(183,245,3)(183,245)通过在摄影中对连续亮度影像进行网格划分的采样过程,将每个单元格内亮度统一,形成像素。采样频率决定图像清晰度,过高或过低都会引发问题。接着,通过量化为每个像素指定数值,以二进制形式存储,字长影响颜色和亮度精细度,占用存储空间。像素生成原理采样频率和量化数值是关键步骤。频率决定图像分辨率和清晰度,过高数据量大,过小则出现“马赛克”。量化过程将亮度和颜色范围分配给每个像素,字长越大,图像色彩和亮度层次越丰富,但需要的存储空间也越多。采样和量化处理采样和量化一个像素可以用8位、16位或24位字长表示像素亮度用0-255表示,0为黑,255为白像素数据类型是uint8,即无符号8位整数,uint8类型的取值范围正好是0-255灰度图像概念01图像只有黑色和白色两种像素,像素值为0或255二值图像特点02灰度图像和二值图像灰度图像和二值图像在OpenCV中均用NumPy二维矩阵表示,矩阵元素为uint8类型,占8位OpenCV表示方式03通过cv2.imread()读取图像,返回二维矩阵,可查看各像素值查看像素值示例04灰度图像和二值图像importcv2img=cv2.imread('cameraman.jpg',0)print(img[52:70,52:70])颜色空间和通道02彩色图像和颜色空间思考:五颜六色的彩色图像是如何显示的,是如何保存的?加性颜色模式,RGB由红、绿、蓝三通道组成,亮度增加,颜色变亮,白色为三通道最大值。RGB颜色空间介绍RGB颜色空间通过BGR通道灰度值可确定具体颜色,如红色(255,0,0)、绿色(0,255,0)等通道灰度值与颜色对照每个像素为BGR三元组,取值0-255,共可表示超过1600万种颜色。OpenCV中,可通过split函数或切片操作分解为灰度图像。RGB图像表示与处理importcv2img=cv2.imread('imgs/flower.png')cv2.imshow("Flower",img)[b,g,r]=cv2.split(img)cv2.imshow("B",b)cv2.imshow("G",g)cv2.imshow("R",r)cv2.waitKey(0)彩色图像和颜色空间RGB彩色图像的像素由红,绿,蓝三个通道(Channel)组成,每个通道由一个0-255之间的整数表示,占8位,一个字节。所以,每个像素占24位红,绿,蓝三个通道可以调制出各种颜色色相、饱和度、值表示颜色,H代表颜色种类,S代表颜色纯度,V代表颜色亮度,常用于图像处理。HSV颜色空间解释色相取值0-3600,但OpenCV中限制在0-179,饱和度和值范围均为0-255。HSV值的数值范围使用OpenCV的cvtColor函数将图像从BGR空间转换到HSV空间,便于颜色分析与处理。颜色空间转换操作通过循环遍历并显示HSV图像的三个通道,帮助观察和理解颜色信息。显示HSV通道图像01020304HSV颜色空间L*a*b*颜色空间介绍定义基于人类视觉感知的色彩模型,包括亮度L*、红绿通道a*和黄蓝通道b*,用于图像处理。图像转换与显示使用cv2.cvtColor()将彩色图像转换到L*a*b*空间,分别显示L*、a*、b*三个通道的灰度图像。L*a*b*颜色空间L*a*b*颜色空间importcv2img=cv2.imread('imgs/flower.png')cv2.imshow("Flower",img)lab=cv2.cvtColor(img,cv2.COLOR_BGR2LAB)for(name,ch)inzip(("L*","a*","b*"),cv2.split(lab)):cv2.imshow(name,ch)cv2.waitKey(0)用于图像视频处理,亮度色度分离,JPEG、MPEG等压缩标准采用。YCbCr颜色空间解释Y表示亮度,Cb表示蓝色色度,Cr表示红色色度,高效压缩图像数据。YCbCr组件分析展示读取RGB图像,使用OpenCV转换为YCbCr,分别显示三个通道的灰度图像。色彩转换代码示例通过分解的通道图像,体现人眼对亮度敏感度高于色度的特性,适用于图像压缩。图像处理应用YCbCr颜色空间图像矩阵03支持高维矩阵运算,提供ndarray数据结构和多种创建矩阵的函数。NumPy库介绍01多维度、同类型、固定大小的矩阵对象,用于高效存储和处理数据。ndarray数据结构02np.array()、np.zeros()、np.ones()等函数方便创建矩阵,可指定数据类型。创建矩阵函数03通过dtype参数可指定矩阵元素的数据类型,如uint8,适用于处理图像数据。数据类型控制04NumPy矩阵简介NumPy矩阵NumPy矩阵的运算cv2.imread()函数读取图像,返回结果是一个NumPy矩阵importcv2im=cv2.imread("imgs/flower.png")print(type(im))print(im.dtype)print(im.shape)程序的运行结果为:<class'numpy.ndarray'>uint8(183,245,3)importnumpyasnpa=np.array([4,5,8,1])print(type(a))print(a.dtype)c=np.array([(10,31,3,82),(4,53,6,9)],dtype="uint8")print(type(c))print(c.dtype)上述程序的运行结果为:<class'numpy.ndarray'>int32<class'numpy.ndarray'>uint8np.array()能根据一个Pytyon列表创建ndarray矩阵,这个函数可以通过可选参数dtype指定矩阵元素的数据类型矩阵元素相同位置相加、减、乘、除,要求矩阵行数和列数一致。NumPy矩阵元素级运算NumPy矩阵的运算importnumpyasnpa=np.array([[4,6,3],[2,5,9]])b=np.array([[1,2,3],[4,5,6]])print("a=\n",a)print("b=\n",b)print("a+b=\n",a+b)print("a-b=\n",a-b)print("a*b=\n",a*b)print("a/b=\n",a/b)不同大小矩阵运算时,形状小的矩阵元素重复扩展,匹配大矩阵,实现逐元素运算。矩阵广播运算两行三列矩阵与不同整数进行加、减、乘、除,通过元素广播完成运算。NumPy矩阵广播示例NumPy矩阵的运算importnumpyasnpa=np.array([[4,6,3],[2,5,9]])print("a=\n",a)print("a+10=\n",a+10)print("a-5=\n",a-5)print("a*100=\n",a*100)print("a/2=\n",a/2)0102NumPy矩阵深拷贝使用copy()函数创建新矩阵,独立于原矩阵,修改不影响原数据。NumPy矩阵浅拷贝通过赋值创建新引用,不复制数据,修改会反映到原矩阵。NumPy矩阵复制importnumpyasnp#创建原始矩阵arr=np.array([1,2,3,4,5])#深拷贝arr_copy=arr.copy()#修改拷贝数据arr_copy[0]=100print("原始矩阵:",arr)#输出:[12345]print("副本矩阵:",arr_copy)#输出:[1002345]importnumpyasnp#创建原始矩阵a=np.array([[1,2,3],[4,5,6]])#浅拷贝b=ab[0,0]=10#修改浅拷贝后的数据print(a)#输出[[10,2,3],[4,5,6]],a也被修改了使用numpy创建256x300的二维数组,元素类型为uint8,通过for循环将像素值从0到255变化,显示不同灰度等级。灰度图像创建01
importnumpyasnpimportcv2im=np.zeros((256,300),dtype="uint8")foriinrange(256):im[i,:]=icv2.imshow("0",im)cv2.waitKey(0)cv2.destroyAllWindows()创建图像矩阵创建256x300x3的三维数组,元素类型为uint8,通过循环调整每个通道的像素值,通过改变通道可以观察红色、绿色或蓝色通道的颜色变化。彩色图像创建02importnumpy
asnpimportcv2im=np.zeros((256,300,3),dtype
="uint8")foriinrange(256):
im[i,:,0]=i
#im[i,:,1]=icv2.imshow("0",im)cv2.waitKey(0)cv2.destroyAllWindows()创建图像矩阵通过索引获取和修改元素,序号从0开始,如a[2]获取第三个元素。一维矩阵索引01索引包括行号和列号,如c[1,1]获取第二行第二列的元素。二维矩阵索引02需指定行号、列号和通道序号,如img[a,b,2]访问三维矩阵元素。三维矩阵索引03使用冒号指定维度的起点和终点,如a[2:6]获取从2至5的切片,二维矩阵如d=c[0:2,1:3]。切片操作04ndarray矩阵的索引和切片对于一个numpy矩阵,可以通过指定每个维度上的索引获得切片使用:,可以获取这一维度的所有元素对于RGB图像矩阵,可以通过切片获取每个通道的灰度图像#获取一维矩阵中的一个切片importnumpyasnpa=np.arange(10)print(a[2:5])a[:6:2]=1000print(a)#获取二维矩阵中的一个切片importnumpyasnpim=np.ones((20,40),dtype="uint8")print(im[:,2:20])im[10:20,20:30]=255print(im[:,15:25])ndarray矩阵的索引和切片课堂练习:1.创建一个256行300列的二维矩阵,每行元素依次从0递增到255,调用imshow()函数显示这个灰度图像2.创建一个256行300列元素值全是0的三维图像矩阵,获取红色通道的切片,使得每行元素值依次从0递增到255,显示这个图像,观察红色通道的不同像素等级ROI(感兴趣区域)定义图像处理中关注的特定区域,可为矩形、不规则形状,用于减少计算量,集中处理关键图像部分。0102灰度图像提取ROI通过二维切片从灰度图像中获取ROI,如代码所示,显示人物窗口图像。03彩色图像ROI提取在三维矩阵中通过三维切片获取ROI,示例代码展示如何选取并显示彩色图像中的两个不同ROI。获取图像的感兴趣区域importcv2im=cv2.imread("imgs/cameraman.jpg",0)cv2.imshow("0",im)cv2.imshow("1",im[30:,20:150])cv2.waitKey(0)importcv2img
=cv2.imread('imgs/bird.jpg')cv2.imshow("0",img)img1=img[140:280,100:240,:]cv2.imshow("1",img1)img2=img[100:280,220:370,:]cv2.imshow("2",img2)cv2.waitKey(0)cv2.destroyAllWindows()拓展阅读04OpenCV创建窗口函数详解cv2.namedWindow(winname,flags=cv2.WINDOW_AUTOSIZE)用于创建指定名称的显示窗口,是显示图像或视频的基础。通过flags参数可设置窗口属性。创建窗口函数介绍winname:字符串类型,表示窗口的名称。这个名称是唯一的,用于标识不同的窗口;flags:枚举常量,指定窗口的属性,默认值为cv2.WINDOW_AUTOSIZE创建名为'MyImage'的窗口,读取并显示图像,cv2.waitKey(0)等待用户按键,cv2.destroyAllWindows()关闭所有窗口。示例代码演示创建窗口函数介绍#创建一个名为'MyImage'的窗口cv2.namedWindow('MyImage',cv2.WINDOW_NORMAL)img
=cv2.imread('image.jpg')cv2.imshow('MyImage',img)cv2.waitKey(0)cv2.destroyAllWindows()cv2.namedWindow()函数在OpenCV中扮演着重要的角色,它为图像和视频的显示提供了基础。通过设置不同的flags参数,可以灵活地控制窗口的显示效果cv2.createTrackbar(trackbarName,winName,value,maxValue,onChange)用于创建图像处理中的滑动条,动态调整参数如亮度、对比度。cv2.createTrackbar()函数详解trackbarName:滑动条的名称;windowName:滑动条所附加的窗口的名称;value:滑动条的初始位置,是一个整数,表示当前滑动条的位置;maxValue:滑动条的最大值,这个值定义了滑动条可以调整的范围;onChange:滑动条位置改变时的回调函数滑动条参数说明创建滚动条
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高中信息技术必修二“电子点餐信息系统软件开发探究”教学设计-生涯规划与学科融合
- 小学四年级综合实践活动家乡地名调查教学设计
- 高中一年级信息技术《数据分析与表达-走近数据分析》教学设计
- 高二化学选择性必修3功能高分子材料教学设计
- 【知识清单】初中地理七年级上册 1.1 地球和地球仪(湘教版)
- 初中地理八年级“中国的疆域、行政区划与人口民族”填图速记教学设计
- 表情训练导入课程设计
- 小学三年级科学下册《植物开花了》探究式教学设计
- 社交网络谣言传播技术发展课程设计
- 小学六年级综合实践活动 安全在我心中之小学生安全意识调查教学设计
- 2026年淮北安徽相润投资控股集团有限公司公开社会招聘15名补充考试参考题库及答案详解
- 专升本英语完形填空解题技巧
- 2026年秋季统计学专业开学第一课 专业素养与核心竞争力教学设计
- 高中数学必修一三角函数单元整体教学设计
- 中国ABS塑料行业深度调研及投资前景预测研究报告
- 中国钛合金废料行业市场发展趋势与前景展望战略研究报告
- 建筑施工消防应急演练方案
- 2026上半年湖北省武汉市东湖高新区工程系列专业技术职务水平能力测试(环境保护)自测试题及答案解析
- 2026年ICA对外汉语教师资格证考试笔试试题及答案
- 2026年版关于用好乡镇(街道)履行职责事项清单的具体措施课件
- (2025年)“工人阶级重要论述”及“工会十八大精神”知识竞赛试题附答案
评论
0/150
提交评论