Python图像处理五。图像融合图像加减法图像逻辑运算
也许每个人出生的时候都以为这世界都是为他一个人而存在的,当他发现自己错的时候,他便开始长大
少走了弯路,也就错过了风景,无论如何,感谢经历
更多关于Android安全的知识,可前往:https:blog。csdn。netananasorangeycategory11955914。html
本篇文章转载自公众号〔娜璋AI安全之家〕
该系列文章是讲解PythonOpenCV图像处理知识,前期主要讲解图像入门、OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子、图像增强技术、图像分割等,后期结合深度学习研究图像识别、图像分类、目标检测应用。
前一篇文章介绍Python调用OpenCV实现图像平滑,包括五种算法:均值滤波、方框滤波、高斯滤波、中值滤波和双边滤波。这篇文章将详细讲解图像融合、图像加减法、图像逻辑运算和类型转换。希望文章对您有所帮助,如果有不足之处,还请海涵
一。图像融合二。图像加法和减法运算1。加法运算2。减法运算三。图像逻辑运算1。与运算2。或运算3。异或运算4。非运算四。图像类型转换
该系列在github所有源代码:https:github。comeastmountyxzImageProcessingPython
前文回顾(下面的超链接可以点击喔):〔Python图像处理〕一。图像处理基础知识及OpenCV入门函数〔Python图像处理〕二。OpenCVNumpy库读取与修改像素〔Python图像处理〕三。获取图像属性、兴趣ROI区域及通道处理〔Python图像处理〕四。图像平滑之均值滤波、方框滤波、高斯滤波、中值滤波及双边滤波〔Python图像处理〕五。图像融合、图像加减法、图像逻辑运算及图像类型转换
学Python近八年,认识了很多大佬和朋友,感恩。由于在外求学且需要养娃,故在CSDN设置成了最低价收费专栏,觉得不错的可以购买抬爱;但作者的本意是帮助更多初学者入门,因此在github开源了所有代码,也在公众号同步更新。深知自己很菜,得拼命努力前行,编程也没有什么捷径,干就对了。希望未来能更透彻学习和撰写文章,同时非常感谢参考文献中的大佬们的文章和分享,共勉。
https:blog。csdn。neteastmount一。图像融合
图像融合通常是指将2张或2张以上的图像信息融合到1张图像上,融合的图像含有更多的信息,能够更方便人们观察或计算机处理。如下图所示,将两张不清晰的图像融合得到更清晰的图。
图像融合是在图像加法的基础上增加了系数和亮度调节量,它与图像的主要区别如下:图像加法:目标图像图像1图像2图像融合:目标图像图像1系数1图像2系数2亮度调节量
在OpenCV中,图像融合主要调用addWeighted()函数实现,其原型如下。需要注意的是,两张融合图像的像素大小必须一致,参数gamma不能省略。dstcv2。addWeighted(scr1,alpha,src2,beta,gamma)dstsrc1alphasrc2betagamma
下面的代码是将两张图片进行图像融合,两张图片的系数均为1。encoding:utf8By:EastmountCSDN20210126importcv2importnumpyasnpimportmatplotlib。pyplotasplt读取图片src1cv2。imread(lenahd。png)src2cv2。imread(na。png)图像融合resultcv2。addWeighted(src1,1,src2,1,0)显示图像cv2。imshow(src1,src1)cv2。imshow(src2,src2)cv2。imshow(result,result)等待显示cv2。waitKey(0)cv2。destroyAllWindows()
输出结果如图所示,它将src1图像和src2图像按比例系数进行了融合,生成目标结果图result。
同样可以设置不同的融合比例,比如函数设为cv2。addWeighted(src1,0。6,src2,0。8,10),则输出的结果如图所示。
如果想表白,可以试试这部分代码。
二。图像加法和减法运算1。加法运算
(1)Numpy库加法
其运算方法是:目标图像图像1图像2,运算结果进行取模运算。当像素值255时,结果为图像1图像2,例如:12048168当像素值255时,结果为对255取模的结果,例如:(25564)25564
(2)OpenCV加法运算
另一种方法是直接调用OpenCV库实现图像加法运算,方法如下:目标图像cv2。add(图像1,图像2)
此时结果是饱和运算,即:当像素值255时,结果为图像1图像2,例如:12048168当像素值255时,结果为255,例如:(25564)255
两种方法对应的代码如下所示:encoding:utf8importcv2importnumpyasnpimportmatplotlib。pyplotasplt读取图片imgcv2。imread(picture。bmp)testimg方法一:Numpy加法运算result1imgtest方法二:OpenCV加法运算result2cv2。add(img,test)显示图像cv2。imshow(original,img)cv2。imshow(result1,result1)cv2。imshow(result2,result2)等待显示cv2。waitKey(0)cv2。destroyAllWindows()
输出结果如下,其中result1为第一种方法,result2为第二种方法,白色点255更多。
注意:参与运算的图像大小和类型必须一致。下面是对彩色图像加法运算的结果。
下面的代码实现了图像加法运算。注意,如果相加值大于255,则输出图像的像素结果设置为255。coding:utf8importcv2importnumpyasnp读取图片imgcv2。imread(Lena。png)图像各像素加100mnp。ones(img。shape,dtypeuint8)100OpenCV加法运算resultcv2。add(img,m)显示图像cv2。imshow(original,img)cv2。imshow(result,result)等待显示cv2。waitKey(0)cv2。destroyAllWindows()
输出如图所示,左边为原始图像,右边为像素值增加100像素后的图像,输出图像显示更偏白。
2。减法运算
图像减法运算主要调用subtract()函数实现,其原型如下所示:dstsubtract(src1,src2〔,dst〔,mask〔,dtype〕〕〕)src1表示第一张图像的像素矩阵
src2表示第二张图像的像素矩阵
实现代码详见如下:coding:utf8By:EastmountCSDN20210224importcv2importnumpyasnp读取图片imgcv2。imread(Lena。png)图像各像素减50mnp。ones(img。shape,dtypeuint8)50OpenCV减法运算resultcv2。subtract(img,m)显示图像cv2。imshow(original,img)cv2。imshow(result,result)等待显示cv2。waitKey(0)cv2。destroyAllWindows()
输出如图所示,左边为原始图像,右边为像素值减少50像素后的图像,输出图像显示更偏暗。
三。图像逻辑运算1。与运算
与运算是计算机中一种基本的逻辑运算方式,符号表示为,其运算规则为:000、010、100、111。图像的与运算是指两张图像(灰度图像或彩色图像均可)的每个像素值进行二进制与操作,实现图像裁剪。dstbitwiseand(src1,src2〔,dst〔,mask〕〕)src1表示第一张图像的像素矩阵
src2表示第二张图像的像素矩阵
dst表示输出的图像,必须和输入图像具有相同的大小和通道数
mask表示可选操作掩码(8位单通道数组),用于指定要更改的输出数组的元素
下面代码是通过图像与运算实现图像剪裁的功能。coding:utf8By:EastmountCSDN20210224importcv2importnumpyasnp读取图片imgcv2。imread(Lena。png,cv2。IMREADGRAYSCALE)获取图像宽和高rows,colsimg。shape〔:2〕print(rows,cols)画圆形circlenp。zeros((rows,cols),dtypeuint8)cv2。circle(circle,(int(rows2。0),int(cols2)),80,255,1)print(circle。shape)print(img。size,circle。size)OpenCV图像与运算resultcv2。bitwiseand(img,circle)显示图像cv2。imshow(original,img)cv2。imshow(circle,circle)cv2。imshow(result,result)等待显示cv2。waitKey(0)cv2。destroyAllWindows()
输出如图所示,原始图像与圆形进行与运算之后,提取了其中心轮廓。同时输出图像的形状为256256,图像大小为65536个像素。注意,两张进行与运算的图像大小和类型必须一致。
2。或运算
逻辑或运算是指如果一个操作数或多个操作数为true,则逻辑或运算符返回布尔值true;只有全部操作数为false,结果才是false。图像的或运算是指两张图像(灰度图像或彩色图像均可)的每个像素值进行二进制或操作,实现图像裁剪。其函数原型如下所示:dstbitwiseor(src1,src2〔,dst〔,mask〕〕)src1表示第一张图像的像素矩阵
src2表示第二张图像的像素矩阵
dst表示输出的图像,必须和输入图像具有相同的大小和通道数
mask表示可选操作掩码(8位单通道数组),用于指定要更改的输出数组的元素
下面代码是通过图像或运算实现图像剪裁的功能。coding:utf8By:EastmountCSDN20210224importcv2importnumpyasnp读取图片imgcv2。imread(Lena。png,cv2。IMREADGRAYSCALE)获取图像宽和高rows,colsimg。shape〔:2〕print(rows,cols)画圆形circlenp。zeros((rows,cols),dtypeuint8)cv2。circle(circle,(int(rows2),int(cols2)),80,255,1)print(circle。shape)print(img。size,circle。size)OpenCV图像或运算resultcv2。bitwiseor(img,circle)显示图像cv2。imshow(original,img)cv2。imshow(circle,circle)cv2。imshow(result,result)等待显示cv2。waitKey(0)cv2。destroyAllWindows()
输出如图所示,原始图像与圆形进行或运算之后,提取了图像除中心原形之外的像素值。
3。异或运算
逻辑异或运算(xor)是一个数学运算符,数学符号为,计算机符号为xor,其运算法则为:如果a、b两个值不相同,则异或结果为1;如果a、b两个值相同,异或结果为0。图像的异或运算是指两张图像(灰度图像或彩色图像均可)的每个像素值进行二进制异或操作,实现图像裁剪。其函数原型如下所示:dstbitwisexor(src1,src2〔,dst〔,mask〕〕)src1表示第一张图像的像素矩阵
src2表示第二张图像的像素矩阵
dst表示输出的图像,必须和输入图像具有相同的大小和通道数
mask表示可选操作掩码(8位单通道数组),用于指定要更改的输出数组的元素
图像异或运算的实现代码如下所示。coding:utf8importcv2importnumpyasnp读取图片imgcv2。imread(Lena。png,cv2。IMREADGRAYSCALE)获取图像宽和高rows,colsimg。shape〔:2〕print(rows,cols)画圆形circlenp。zeros((rows,cols),dtypeuint8)cv2。circle(circle,(int(rows2),int(cols2)),80,255,1)print(circle。shape)print(img。size,circle。size)OpenCV图像异或运算resultcv2。bitwisexor(img,circle)显示图像cv2。imshow(original,img)cv2。imshow(circle,circle)cv2。imshow(result,result)等待显示cv2。waitKey(0)cv2。destroyAllWindows()
原始图像与圆形进行异或运算之后输出如图所示。
4。图像非运算
图像非运算就是图像的像素反色处理,它将原始图像的黑色像素点转换为白色像素点,白色像素点则转换为黑色像素点,其函数原型如下:dstbitwisenot(src1,src2〔,dst〔,mask〕〕)src1表示第一张图像的像素矩阵
src2表示第二张图像的像素矩阵
dst表示输出的图像,必须和输入图像具有相同的大小和通道数
mask表示可选操作掩码(8位单通道数组),用于指定要更改的输出数组的元素
图像非运算的实现代码如下所示。coding:utf8importcv2importnumpyasnp读取图片imgcv2。imread(Lena。png,cv2。IMREADGRAYSCALE)OpenCV图像非运算resultcv2。bitwisenot(img)显示图像cv2。imshow(original,img)cv2。imshow(result,result)等待显示cv2。waitKey(0)cv2。destroyAllWindows()
原始图像非运算之后输出如图所示。
四。图像类型转换
图像类型转换是指将一种类型转换为另一种类型,比如彩色图像转换为灰度图像、BGR图像转换为RGB图像。OPenCV提供了200多种不同类型之间的转换,其中最常用的包括3类,如下:cv2。COLORBGR2GRAYcv2。COLORBGR2RGBcv2。COLORGRAY2BGR
代码如下所示:encoding:utf8importcv2importnumpyasnpimportmatplotlib。pyplotasplt读取图片srccv2。imread(01。bmp)图像类型转换resultcv2。cvtColor(src,cv2。COLORBGR2GRAY)显示图像cv2。imshow(src,src)cv2。imshow(result,result)等待显示cv2。waitKey(0)cv2。destroyAllWindows()
输出结果如下图所示:
如果使用通道转化,则结果如下图所示:resultcv2。cvtColor(src,cv2。COLORBGR2RGB)
五。总结
本文主要讲解Python和OpenCV的图像基础处理,具体内容包括:一。图像融合二。图像加法和减法运算
1。加法运算
2。减法运算三。图像逻辑运算
1。与运算
2。或运算
3。异或运算
4。图像非运算四。图像类型转换
源代码下载地址,记得帮忙点star和关注喔!https:github。comeastmountyxzImageProcessingPython
2020年8月18新开的娜璋AI安全之家,主要围绕Python大数据分析、网络空间安全、人工智能、Web渗透及攻防技术进行讲解,同时分享CCF、SCI、南核北核论文的算法实现。娜璋之家会更加系统,并重构作者的所有文章,从零讲解Python和安全,写了近十年文章,真心想把自己所学所感所做分享出来,还请各位多多指教,真诚邀请您的关注!谢谢。
(By:Eastmount20210224夜于武汉)
参考文献,在此感谢这些大佬,共勉!〔1〕冈萨雷斯。数字图像处理(第3版)〔M〕。电子工业出版社,2013。〔2〕毛星云,冷雪飞。OpenCV3编程入门〔M〕。电子工业出版社,2015。〔3〕https:blog。csdn。netEastmount
你以为你有很多路可以选择,其实你只有一条路可以走
盘点12月份至今勇士1。4亿先生普尔最后决战时刻失误12月8号对阵爵士,最后4秒普尔持球被断后爵士得两分124123完成绝杀勇士,12月29号还是爵士最后40秒普尔持球被断,被对方快攻造成犯规,比分被追至107109差两分,还好最后
难兄碰难弟,三分如雨下!周四NBA爵士VS火箭爵士这支球队早在他们登顶西部第一我就放出狠话,向他们这种级别的球队早晚会回到属于他们的位置,果不其然,近期爵士一波5败被打回原形,球队排名也跌至西部第10,在
拆解一胎双胞ThinkPadP152021和P172021对比评测连载2文章介绍本文为ThinkPadP15Gen2和P17Gen2对比评测连载的第二篇,全文6000余字图片近80张,中文版在httpswww。song1118。com首发,英文版将稍后
又一个网络嗅探和安全审核工具nmap,虽小但很强悍!对于nmap,相信很多安全运维人员并不陌生,它曾经在电影黑客帝国中出现过,是黑客和网络安全人员经常用到的工具。nmap是一款开源免费的网络发现工具,通过它能够找出网络上在线的主机,
我觉得别买iPhone买RedmiK60,你怎么看?这个问题似乎问的非常没意思,一部67千元的手机,和一部2000多的手机对比,能比出什么结果呢?但是,就这个问题还是有讨论意义的,可以分享一下我的看法与观点,我怎么看待iPhone的
应对消费升级,七匹狼推出K254联名系列创立以来,七匹狼茄克把创建千亿市值的时尚产业集团确立为企业愿景之一,不断推动时尚创新步伐。为应对消费需求升级,七匹狼男装在原有的产品体系上升级换代,融合国际视野,携手国际知名羽绒品
深耕京津冀产业链条助推高质量发展图为在文安县智能装备产业园华威博奥电力设备有限公司,工人正在组装非金属电表箱。图为在文安县新镇镇雅曼诺仪器仪表(河北)有限公司生产车间,工人正在检测高纯压力表内径清洁度。近年来,文
36氪首发A轮融资36氪获悉,高端连锁月子中心JEAN锦恩健康近日完成了1500万元PreA轮融资,投资方为北京中谷嘉蕴。本轮融资主要用于全国重点城市大范围的市场布局与子品牌开设ERP标准化管理系统
三连胜心情大好,威少爷忙里偷闲观看母校UCLA比赛今日洛杉矶湖人队没有比赛,趁着如今球队取得三连胜的大好心情,威斯布鲁克与妻子一起去观看他们共同的母校UCLA(加州大学洛杉矶分校)与USC(南加利福尼亚大学)的大学篮球比赛。同时出
我没有忘记你,你一直在我心里朋友你还好吗读过我之前的文章的朋友可能会有点印象,我曾有个同学小卉,她是我小学的同班同学亦是我当年最要好的朋友。我们俩人在一起的时光,至今我都还记忆犹新,我生病了上学的路上是小卉帮
审计赋能甘肃丝路版权高地引来全国千名著作权人文高榕袁思亮从每年的200件左右增长到1。5万多件,再到3万多件,直到2022年上半年的2万多件,丝绸之路国际知识产权港(以下简称知识产权港)在甘肃建设并开展版权登记以来,得益于审
对宝宝的爱,永远不够!历史上的2021年2月26日,是正月十五元宵节,也是春节的最后一天,在依然禁止燃放烟花爆竹的北京家中,是我和大宝陪老伴儿剖腹产坐月子的第二十一天。二宝出疹子,腋窝脖子身上都有一些了
亮剑电视剧中关于酒的硬伤本文为文文方丈聊老酒原创,想了解更多关于中国陈年白酒的文化和故事,欢迎关注文文方丈聊老酒,闲聊天南地北中国酒。近日,在头条上刷到神剧亮剑的剧情解说,不觉间竟一连看了好几个小时。意外
朱琳101女孩的自信逆袭来源人民日报中央厨房哨声体育工作室新赛季希望可以闯入世界前五十,获得一个巡回赛单打冠军!这是朱琳在2023年1月为自己定下的目标。随着她在澳网闯入女单16强,并在泰国华欣站捧起女单
63岁郎平大变样,穿国风裙子像少女,退休生活太惬意在提到中国女排的时候,郎平永远是避不开的话题,而现在围绕她的无外乎两个极端评价,一是带出历史最差成绩,二是期待她还能够再拾起教鞭,尤其是爆出她可能执教费内巴切女排的时候,很多人更是
闵行新添2条标准旱地冰壶赛道,可预约免费使用圆明园重现古代冰嬉运动市民在冰场上玩起了花滑冰上龙舟冰上自行车官兵开启了一场趣味冰上运动会,足球拔河接力这个冬天,大家对参与冰雪运动的热情高涨,朋友圈随意刷一刷都是大家庆祝冬天可以
郭晶晶,你凭什么让人敬佩?郭晶晶,一个在普通家庭长大的女孩,最后不仅仅成为了世界冠军,还成为了顶流豪门中让人敬佩的豪门媳妇。郭晶晶,很多人都想不明白,她为何人一步又一步走上人生巅峰。郭晶晶,很多人也想不明白
欧美大厂过冬发行业务探路降本增效,过去一年频频出现在国内游戏厂商的形容上,事实上,2022年全球游戏市场大环境的低迷,导致国内外企业大同小异,削减开支砍项目关停出售等节流操作比比皆是。不同的是,去年年末多
解决猫咪战车卡加载界面加载失败的情况CATSCrashArenaTurboStars猫咪战车比赛系统,锦标赛在锦标赛中,玩家可以通过连续打败一定量的对手或者在比赛结束前保持前6名的排名进入下一段位,同时玩家可以可以获
腹胀腹满撑得慌?送你三个食疗方春节是万家团聚的日子,每逢佳节胖三斤,美食当前,一不小心就吃多了,很多人可能会出现饱胀腹满等不适,广东省妇幼保健院中医科副主任医师刘嘉芬支招,不妨试试以下几个食疗方法。消滞食疗方材
面对辣椒的利与弊,我们应该如何食用,趋利避害呢?生活中,辣椒深受人们的喜爱,对于很多无辣不欢的朋友来说,辣椒已经成为了生活中不可缺少的一部分。辣椒如果适量食用,对大多数人来说有利无害。但是,如果不加以控制,可能会适得其反,对身体
如何安全有效的补充维生素D?维生素D非常重要,是因为它对我们人体的免疫系统,有调控的作用。维生素D的重要性维生素D在天然的食物中含量非常少,无法满足人体的需要。维生素D主要通过人体皮肤照射太阳后,由皮肤中的胆