首页IT科技opencv aruco(AI必备技能-OpenCV基础讲解)

opencv aruco(AI必备技能-OpenCV基础讲解)

时间2025-06-15 15:44:17分类IT科技浏览4814
导读:🎉作者简介...

🎉作者简介

:目前在读计算机研究生            ,研二            。主要研究方向是人工智能和群智能算法方向                    。目前熟悉python网页爬虫            、机器学习                    、计算机视觉(OpenCV)        、群智能算法        。然后正在学习深度学习的相关内容         。以后可能会涉及到网络安全相关领域                    ,毕竟这是每一个学习计算机的梦想嘛!

📃个人主页

:吃猫的鱼python个人主页

🔎支持

:如果觉得博主的文章还不错或者您用得到的话        ,可以免费的关注一下博主         ,如果三连收藏支持就更好啦!👍这就是给予我最大的支持!🎁

💛本文摘要💛: 本文我们将继续讲解相关计算机视觉的相关知识                   。具体包括以下几个内容            。

🔔 1.图像的加法运算                   ,包括python中的numpy加法操作以及OpenCV加法运算      。

🔔 2.图像融合                  。

🔔3.图像的类型转换               。

🔔4.图像缩放   。

🔔5.图像翻转                  。

🎥前言

未来随着5G技术的普及            ,整个世界也许看到的都是视频与图像      ,视频与图像数据都需要通过计算机视觉进行解析信息                  ,读取理解               ,也有人说未来的世界将是像素主导一切的世界   ,这样我们就更加离不开计算机视觉等相关技术                  。

OpenCV框架是计算机视觉领域最流行的框架之一,自发布以来                  ,因为其免费开源收到了工业界与学术界广泛关注与兴趣                  ,成功的在多个计算机视觉应用领域落地,这些领域包括生物图像检测与分析         、工业缺陷检测                   、军事无人机            、农业植物图像分析      、安防监控领域                  、文字OCR识别               、文档信息化处理   、视频分析                  、智能交通与无人驾驶领域                  、水体环境监测、设备缺陷分析等方面。

🎥OpenCV知识讲解

🔆图像的加法运算

📻1.numpy加法运算讲解

其中numpy使用的就是加模运算

               。

运算过程就是:运算结果=图像1+图像2

因为图像上的表示都为二进制表示               ,比如我们所说的

0→00000000 255→11111111

📟情况一:但是如果两个图像对应的像素值相加小于等于255                     ,那么我们就取该值    ,保留下来                     。

比如100+58=158            ,那么158<=255                    ,那么我们保留158这个数值    。

📟情况二:如果两个图像对应的像素值相加大于255        ,那么我们就对255取模运算            。

比如255+58=313         ,那么就进行313%255=58                   ,这里就保留取模运算之后的结果58                    。

📻2.OpenCV加法运算讲解

OpenCV使用的是饱和运算

       。

运算过程就是:结果=cv2.add(图像1            ,图像2)

这里的方法就和上方的numpy算法有所不同         。

📟情况一:保持一致      ,如果不超过255                  ,那么我们就保留下来                   。

📟情况二:如果相加的结果超过了255               ,那么我们就直接保留255            。和上方不同!

📻3.Numpy和OpenCV加法运算代码

import cv2 import numpy as np a=cv2.imread(path(图片对应路径)) b=a add1=a+b add2=cv2.add(a,b) cv2.imshow(add1,add1) cv2.imshow(add2,add2) cv2.waitKey() cv2.destroyAllWindows()

我们还是以大美女lena为例      。这里是原始图像                  。

这是Numpy加模运算结果图   ,可以看出超过255的点都进行了加模               。

这里是OpenCV加法运算结果图   。

📌重要注意:这里参与加法运算的所有图像必须保证大小一致                  ,类型必须一致                  。

🔆图像融合

融合的目的就是将2张或者2张以上的图像信息融合到一张图像上                  。 融合的图像含有更多的信息                  ,能够方便人来观察或者计算机的处理。部分不清晰+部分不清晰=清晰

在做图像融合的时候:结果图像=图像1系数1+图像2系数2+亮度调节值

,其中的系数1和系数2可以说成图像所占权重               。

📤使用函数addWeighted

dst=cv.addWeighted(src1,alpha,arc2,bata,gamma)

dst=src1alpha+src2beta+gamma

下面我们介绍一下图像boat和图像lena的融合结果                     。

📤图像融合代码 import cv2 a=cv2.imread(path boat) b=cv2.imread(path lena) c=cv2.addWeighted(a,1,b,1,0) cv2.imshow(a,a) cv2.imshow(b,b) cv2.imshow(c,c) cv2.waitKey

🔆图像的类型转换

我们之前提及过图片类型转换我们今天要进行详细的解答    。

其中类型转换包括由彩色也就是BGR转化为灰度图像               ,BGR转RGB                     ,灰度图像转RGB图像    ,还有灰度图像转二值图像等等            。其中OpenCV提供了200多种的类型转换方法                    。其中最常用的包括:

cv2.COLOR_BGR2GRAY BGR转灰度图像 cv2.COLOR_BGR2RGB BGR转RGB cv2.COLOR_GRAY2BGR 灰度图像转BGR

💡1.BGR转灰度图像 import cv2 a=cv2.imread(lenacolor.png) b=cv2.cvtColor(a,cv2.COLOR_BGR2GRAY) cv2.imshow(lenacolor,a) cv2.imshow(lenaGray,b) cv2.waitKey() cv2.destroyAllWindows()

💡2.BGR转RGB

import cv2 a=cv2.imread(lenacolor.png) b=cv2.cvtColor(a,cv2.COLOR_BGR2RGB) cv2.imshow(lenacolor,a) cv2.imshow(lenaGray,b) cv2.waitKey() cv2.destroyAllWindows()

💡3.灰度图像转BGR

import cv2 a=cv2.imread(lenagray.png) b=cv2.cvtColor(a,cv2.COLOR_GRAY2BGR) cv2.imshow(lenagrayr,a) cv2.imshow(lenabgr,b) print(a.shape) print(b.shape) bb,bg,br=cv2.split(b) cv2.imshow("bb",bb) cv2.imshow("bg",bg) cv2.imshow("br",br) cv2.waitKey() cv2.destroyAllWindows()

这里我们得到的输出是(256            ,256)和(256                    ,256        ,3)         ,说明已经转型成功        。

🔆图像缩放

图像缩放相关函数:resize函数

语法格式:

dst=cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]]) dst=cv2.resize(src,dsize)

其中src为原始图像                   ,dsize为缩放的大小

🔑例如:b=cv2.resize(a,(122,122)),(122,122)表示新图片的尺寸         。

其中还有一种表达形式就是            ,fx表示在水平方向上放大或者缩小了多少倍      ,如果大于1则说明是放大                  ,如果小于1               ,说明是缩小多少倍                   。同样fy表示在垂直方向上            。

dsize和fx   ,fy设置一个即可!

一般情况下我们都这么表示:

b=cv2.resize(a,(round(cols0.5),round(rows0.5)))

其中round函数表示四舍五入的意思      。或者

b=cv2.resize(a,None,fx=1.2,fy=0.5) 这里就表示在水平方向上放大1.2倍                  ,在垂直方向上虽小0.5倍                  。

⌛️代码部分

import cv2 a=cv2.imread("image\\lenacolor.png") rows,cols=a.shape[:2] b=cv2.resize(a,(200,100)) cv2.imshow("original",a) cv2.imshow("resize",b) cv2.waitKey() cv2.destroyAllWindows() import cv2 a=cv2.imread("image\\lenacolor.png") rows,cols=a.shape[:2] b=cv2.resize(a,(round(cols*0.5),round(rows*1.2))) cv2.imshow("original",a) cv2.imshow("resize",b) cv2.waitKey() cv2.destroyAllWindows()

🔆图像翻转

函数介绍:flip函数

相关语法:

dst=cv2.flip(src,flipcode)

src表示原始图像                  ,flipcode表示使用什么模式翻转

🔑例如:dst=cv2.flip(src,1)

flipcode=0;表示以x轴为对称轴上下翻转               。 flipcode>0;表示以y轴为对称轴上下翻转   。 flipcode<0;表示以x轴和y轴为对称轴同时翻转                  。

📄对应代码

import cv2 a=cv2.imread("image\\lenacolor.png") b=cv2.flip(a,0) cv2.imshow("original",a) cv2.imshow("flip",b) cv2.waitKey() cv2.destroyAllWindows()

📒文章适合于所有的相关人士进行学习📒

📒各位看官看完了之后不要立刻转身呀📒

📒期待三连关注小小博主加收藏📒

📒小小博主回关快 会给你意想不到的惊喜呀📒

各位老板动动小手给小弟点赞收藏一下,多多支持是我更新得动力!!!
声明:本站所有文章               ,如无特殊说明或标注                     ,均为本站原创发布                  。任何个人或组织    ,在未征得本站同意时            ,禁止复制               、盗用                     、采集    、发布本站内容到任何网站            、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益                    ,可联系我们进行处理               。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
python破解WiFi(python psutil库有何用法?) 传奇4搬砖一天多少钱玩哪些游戏赚钱快-Steam《传奇4》稳定6W玩家在线,游戏与赚钱并存,依旧抵不过外挂