首页/新闻资讯/正文详情

OpenCV实战第二篇:用代码给照片做一场精细的“像素级整容”

发布时间:2026/11/8 8:58:37 来源:云帆数科 栏目:资讯中心
OpenCV实战第二篇:用代码给照片做一场精细的“像素级整容”
本系列为超级适合新手入门的opencv教程上一篇OpenCV实战第一篇计算机的眼里你的自拍只是一堆破烂Mat数组本篇内容访问与修改图片像素内容ROI(感兴趣)区域目录本系列为超级适合新手入门的opencv教程本篇内容1.获得图片的大小与类型函数(实际上是属性不过我们可以当作函数使用他们)语法翻译代码函数讲解函数的结果如何修改图片的内容呢3.ROI感兴趣区域4. 图像通道的分割4.1.split函数函数语法翻译代码函数讲解函数举例函数结果merge函数函数语法翻译代码函数讲解函数结果4.2 直接分离(使用数组)**原理**4.3进阶方法numpy原理在上一篇我们知道每一个图片在opencv程序之中是以一个mat数组或者ndarray数组进行存储的所以我们可以以操作每一个像素的方法以一个极其细致的方法对这个图片进行操作首先我们先读取一个图片importcv2#导入opencvtore_path./resources/image/tore.png#读取图片的路径torecv2.imread(tore_path)#获取图片数组1.获得图片的大小与类型print(tore.shape)#获得图片的大小和类型函数(实际上是属性不过我们可以当作函数使用他们)语法defshape(self)-tuple[int,...]翻译代码函数 shape(自身)-元组[整形]函数讲解在源代码之中对shape函数的描述如下Anything that can be coerced to a shape tuple翻译出来就是任何可被强制转换为形状元组的对象。那么在这里这个可以被转换成形状元组的对象就是一张图片。那么什么是形状元组呢形状元组分为两种一种是对于拥有三通道图片的另一种是对于灰度图的。第一种为高,宽,通道数第二种为(高宽)这样我们就能获得这个图片的大小和类型。函数的结果(1000,1000,3)如何修改图片的内容呢我们使用的是类似于直接修改图片数组里面的元素的方法。tore[100,100][255,255,255]我们可以把图片的左上角看作原点这个坐标就是以这样的方法来设定坐标的。我们把[100100]这个地方的像素变成白色。虽然可能有些看不太清楚但是在这个部分能看到一个白色的小点我们还有别的需求如果我们需要一条白线呢tore[100:120][255,255,255]我们把纵坐标的100到120这一段设定为白色而不设定横坐标那么就会默认是把所有满足这一点的变成白色。那么大家可以去试试如果把再把横坐标设定为100:200我们该怎么做呢3.ROI感兴趣区域什么是感兴趣区域就是在这个图像之中我们需要重点关注的区域。tore_interesttore.copy()# 复制一个这样的图片tore_interest_settore[250:850,250:850]# 提取这个图片的一个部分可以看作是切割这个图像4. 图像通道的分割对于分离图片的颜色通道我们有很多种办法4.1.split函数函数语法defsplit(m:Mat|ndarray[Any,dtype]|ndarray,mv:Sequence[Mat|ndarray[Any,dtype]|ndarray]|None...)-Sequence[Mat|ndarray[Any,dtype]|ndarray]翻译代码函数 split(输入矩阵:Mat数组 [或] ndarray数组[任意类型, 每个元素的数据类型[泛型]] [或] ndarray数组, 输出向量序列:序列[Mat数组 [或] ndarray数组[任意类型, 每个元素的数据类型[泛型]] [或] ndarray数组] [或] None空值 ...) - 输出:序列[Mat数组 [或] ndarray数组[任意类型, 每个元素的数据类型[泛型]] [或] ndarray数组]函数讲解在这里我们以三个变量作为蓝色、 绿色、红色三个通道但注意这里输出的是一个灰度图所以我们不能输出一个彩色的图片。函数举例tore_colortore.copy()b,g,rcv2.split(tore_color)# 分离通道mergedcv2.merge((b,g,r))# 合并通道函数结果这是函数的结果(b)merge函数函数语法defmerge(mv:Sequence[Mat|ndarray[Any,dtype]|ndarray],dst:Mat|ndarray[Any,dtype]|ndarray|None...)-Mat|ndarray[Any,dtype]|ndarray翻译代码函数 merge(输入矩阵序列:序列[Mat数组 [或] ndarray数组[任意类型, 每个元素的数据类型[泛型]] [或] ndarray数组], 输出矩阵:Mat数组 [或] ndarray数组[任意类型, 每个元素的数据类型[泛型]] [或] ndarray数组 [或] None空值 ...) - 输出:Mat数组 [或] ndarray数组[任意类型, 每个元素的数据类型[泛型]] [或] ndarray数组函数讲解这个函数的作用是合并图像通道它的参数就是我们使用上一个函数分离出来的图像通道。我们能够把三个通道合并起来或者把一个通道合并三次我们当然也可以两个两个的合并不过这个函数必须输入三个参数(或者说三个参数的意义最大我们可以使用单参数和四参数不过用的不多故而我在此写三个参数)所以我们可以创建一个相同大小的ndarry数组但在这里我就跳过了如何创建ndarray数组直接给大家进行使用由此这个函数有多种合并方式。但注意。注意每个元素出现的次数所在的位置的不同所得到的东西都完全不一致。举例merged cv2.merge((b,g,g))merged cv2.merge((g,g,b))merged cv2.merge((b,b,g))merged cv2.merge((b,g,r))这三个产出的图片效果都完全不一样懂了吗懂了的自刎归天(刘备音)还有一个好玩的就是你可以直接的展示b也可以把三个b合并在一起这个样子如果这个做的话两张图片在肉眼看起来是完全一致的就是一张灰度图。函数结果bgrbbr4.2 直接分离(使用数组)原理我们可以把图片的相关数据看作一个元组这个元组就是上面写过的形状数组故而tore_color_bluetore_color[:,:,1]最后的那个数字可以是012。代表着bgl三色。4.3进阶方法numpy原理opencv和numpy的关联很多我们可以把这个看作是一个numpy数组。importnumpyasnpimportcv2 b,g,rcv2.split(tore_color)zeronp.zeros(tore.shape[:2],dtypenp.uint8)tore_color_bluecv2.merge([b,zero,zero])cv2.imshow(tore,tore_color_blue)导入Numpy包把b、g、r三个变量弄出来。创造一个全0数组这个全零数组的长宽和图片的长宽是一致的,shape的意思就拿出这个三通道图片的前两个数组即长宽。把zero当作参数放到里面出来的也是一个三通道图片由这个方法弄出来的图片是三通道图片和上面两个图片是不同的

相关推荐

星智 1.54 METAL 触摸交互完整指南:一键烧录固件、分区解析触控、拆解电源状态机
星智 1.54 METAL 触摸交互完整指南:一键烧录固件、分区解析触控、拆解电源状态机

星智 1.54 METAL 触摸交互完整指南:一键烧录固件、分区解析触控、拆解电源状态机 【免费下载链接】xiaozhi-esp32 An MCP-based chatbot | 一个基于MCP的聊天机器人 项目地址: https://gitcode.com/GitHub_Trending/xia/xiaozhi-esp32 开篇导读 无名科技星智… · 2026/11/7 13:19:56

互联网的数据请求的架构演变
互联网的数据请求的架构演变

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/7 15:45:16

六轮怎么在碎石上不掉轮子:open-source-rover 开源火星车搭建手册
六轮怎么在碎石上不掉轮子:open-source-rover 开源火星车搭建手册

六轮怎么在碎石上不掉轮子:open-source-rover 开源火星车搭建手册 【免费下载链接】open-source-rover A build-it-yourself, 6-wheel rover based on the rovers on Mars! 项目地址: https://gitcode.com/gh_mirrors/op/open-source-rover 四轮车爬上碎石堆… · 2026/11/7 20:36:29

燕郊报考电工证官方回应实操考试心里没底怕挂科怎么破
燕郊报考电工证官方回应实操考试心里没底怕挂科怎么破

燕郊报考电工证官方回应实操考试心里没底怕挂科怎么破 实操考试心里没底怕挂科,这是很多准备报考燕郊电工证的学员的真实写照。尤其是在当前特种作业操作证要求越来越严格的背景下,很多人担心自己动手能力不足,怕一上考场就露馅。不过 官方回应… · 2026/11/8 8:58:07

高级电工证报考科目全国通用,学历不高也能考?
高级电工证报考科目全国通用,学历不高也能考?

高级电工证报考科目全国通用,学历不高也能考? 你是不是总担心自己学历不高,考不了高级电工证?别急,咱们今天就来聊聊高级电工证报考科目,还有全国通用的问题,看完你就知道, 学历不高也能考 ! 一、高级电工证报考科目有哪些?一目了然… · 2026/11/8 8:58:07

湘乡市安监电工证怎么考?官方报名入口全攻略
湘乡市安监电工证怎么考?官方报名入口全攻略

湘乡市安监电工证怎么考?官方报名入口全攻略 你是不是也正在为找不到工作发愁?现在好多工地、工厂、建筑项目都要求必须持证上岗,尤其是像湘乡市安监电工证这种特种作业证,已经成为很多电工类岗位的“硬门槛”。没有证,连面试都过不了;有证,找工作也更… · 2026/11/8 8:58:07

全网最牛逼的电工证在哪考才不被中介坑
全网最牛逼的电工证在哪考才不被中介坑

全网最牛逼的电工证在哪考才不被中介坑 你是不是也遇到过这样的情况?想考个【全网最牛逼的电工证】,结果被各种培训机构忽悠,收费高、流程乱、证还不能用。其实,很多人不知道的是, 特种作业证的报考流程其实并不复杂,关键是你得选对地方… · 2026/11/8 8:58:07

燕郊报考电工证官方报名入口在哪?别再被中介忽悠了
燕郊报考电工证官方报名入口在哪?别再被中介忽悠了

燕郊报考电工证官方报名入口在哪?别再被中介忽悠了 你是不是也遇到过这种情况:想报考电工证,但不知道去哪报名,生怕被中介坑?别急,这篇文章带你搞懂 燕郊报考电工证 的 官方报名入口 ,帮你避开陷阱,少走弯路。… · 2026/11/8 8:58:07

西安有免考电工证通过率揭秘:外省证能不能转过来?
西安有免考电工证通过率揭秘:外省证能不能转过来?

西安有免考电工证通过率揭秘:外省证能不能转过来? 之前考的证在外省能不能转过来?这几乎是每个想在西安从事特种作业的工友最关心的问题。特别是对于已经在外地考取电工证的人员来说,转证流程、是否需要重新考试、通过率如何,都是心头大患。今天我们就来… · 2026/11/8 8:57:07

电工证丢失还能补吗?千万别踩坑,丢了证等于失业
电工证丢失还能补吗?千万别踩坑,丢了证等于失业

电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。… · 2026/11/8 0:00:20

电力电缆作业证直播报名入口与办理流程良心建议
电力电缆作业证直播报名入口与办理流程良心建议

电力电缆作业证直播报名入口与办理流程良心建议 你是不是也担心学历不高报不了名?别急,今天就给你讲讲 电力电缆作业证直播 的报名流程和那些你必须知道的干货, 良心建议 在这里,别错过。 电力电缆作业证直播报名需要什么条件?… · 2026/11/8 0:00:20

英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑
英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑

英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑 怕考不过白交培训费?英德电工证报考费多少钱,你真的了解吗?现在市面上培训机构五花八门,价格参差不齐,很多人一不小心就花了冤枉钱,结果还考不过。别急,今天就来给你说清楚英德电工证的… · 2026/11/8 0:00:20

电工证丢失还能补吗?千万别踩坑,丢了证等于失业
电工证丢失还能补吗?千万别踩坑,丢了证等于失业

电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。… · 2026/11/8 0:00:20

电力电缆作业证直播报名入口与办理流程良心建议
电力电缆作业证直播报名入口与办理流程良心建议

电力电缆作业证直播报名入口与办理流程良心建议 你是不是也担心学历不高报不了名?别急,今天就给你讲讲 电力电缆作业证直播 的报名流程和那些你必须知道的干货, 良心建议 在这里,别错过。 电力电缆作业证直播报名需要什么条件?… · 2026/11/8 0:00:20

英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑
英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑

英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑 怕考不过白交培训费?英德电工证报考费多少钱,你真的了解吗?现在市面上培训机构五花八门,价格参差不齐,很多人一不小心就花了冤枉钱,结果还考不过。别急,今天就来给你说清楚英德电工证的… · 2026/11/8 0:00:20

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/7 11:25:08

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/7 12:02:18

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/8 1:18:25

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码