🎉作者简介:目前在读计算机研究生,研二。主要研究方向是人工智能和群智能算法方向。目前熟悉python网页爬虫、机器学习、计算机视觉(OpenCV)、群智能算法。然后正在学习深度学习的相关内容。以后可能会涉及到网络安全相关领域,毕竟这是每一个学习计算机的梦想嘛!
📃个人主页:吃猫的鱼python个人主页
🔎支持:如果觉得博主的文章还不错或者您用得到的话,可以免费的关注一下博主,如果三连收藏支持就更好啦!👍这就是给予我最大的支持!🎁
💛本文摘要💛:
本文我们将继续讲解相关计算机视觉的相关知识。具体包括以下几个内容。
🔔 1.图像的加法运算,包括python中的numpy加法操作以及OpenCV加法运算。
🔔 2.图像融合。
🔔3.图像的类型转换。
🔔4.图像缩放。
🔔5.图像翻转。

文章目录
未来随着5G技术的普及,整个世界也许看到的都是视频与图像,视频与图像数据都需要通过计算机视觉进行解析信息,读取理解,也有人说未来的世界将是像素主导一切的世界,这样我们就更加离不开计算机视觉等相关技术。
OpenCV框架是计算机视觉领域最流行的框架之一,自发布以来,因为其免费开源收到了工业界与学术界广泛关注与兴趣,成功的在多个计算机视觉应用领域落地,这些领域包括生物图像检测与分析、工业缺陷检测、军事无人机、农业植物图像分析、安防监控领域、文字OCR识别、文档信息化处理、视频分析、智能交通与无人驾驶领域、水体环境监测、设备缺陷分析等方面。

📻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加法运算结果图。
📌重要注意:这里参与加法运算的所有图像必须保证大小一致,类型必须一致。

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多种的类型转换方法。其中最常用的包括:
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()




📒文章适合于所有的相关人士进行学习📒
📒各位看官看完了之后不要立刻转身呀📒
📒期待三连关注小小博主加收藏📒
📒小小博主回关快 会给你意想不到的惊喜呀📒
各位老板动动小手给小弟点赞收藏一下,多多支持是我更新得动力!!!
无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD
之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m
1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,
Ⅰ软件测试基础一、软件测试基础理论1、软件测试的必要性所有的产品或者服务上线都需要测试2、测试的发展过程3、什么是软件测试找bug,发现缺陷4、测试的定义使用人工或自动的手段来运行或者测试某个系统的过程。目的在于检测它是否满足规定的需求。弄清预期结果和实际结果的差别。5、测试的目的以最小的人力、物力和时间找出软件中潜在的错误和缺陷6、测试的原则28原则:20%的主要功能要重点测(eg:支付宝的支付功能,其他功能都是次要的)80%的错误存在于20%的代码中7、测试标准8、测试的基本要求功能测试性能测试安全性测试兼容性测试易用性测试外观界面测试可靠性测试二、质量模型衡量一个优秀软件的维度①功能性功
ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear
关闭。这个问题是off-topic.它目前不接受答案。想改进这个问题吗?Updatethequestion所以它是on-topic用于堆栈溢出。关闭11年前。Improvethisquestion我不经常使用ruby-通常它加起来相当于每两个月或更长时间编写一次脚本。我的大部分编程都是使用C++进行的,这与ruby有很大不同。由于我与ruby之间的差距如此之大,我总是忘记语言的基本方面(比如解析文本文件和其他简单的东西)。我想每天练习一些基本的东西,我想知道是否有一些我可以订阅的网站,并且会向我发送当天的Ruby问题或类似的东西。有人知道这样的站点/Internet服务吗?
(本文是网络的宏观的概念铺垫)目录计算机网络背景网络发展认识"协议"网络协议初识协议分层OSI七层模型TCP/IP五层(或四层)模型报头以太网碰撞路由器IP地址和MAC地址IP地址与MAC地址总结IP地址MAC地址计算机网络背景网络发展 是最开始先有的计算机,计算机后来因为多项技术的水平升高,逐渐的计算机变的小型化、高效化。后来因为计算机其本身的计算能力比较的快速:独立模式:计算机之间相互独立。 如:有三个人,每个人做的不同的事物,但是是需要协作的完成。 而这三个人所做的事是需要进行协作的,然而刚开始因为每一台计算机之间都是互相独立的。所以前面的人处理完了就需要将数据
1.问题描述使用Python的turtle(海龟绘图)模块提供的函数绘制直线。2.问题分析一幅复杂的图形通常都可以由点、直线、三角形、矩形、平行四边形、圆、椭圆和圆弧等基本图形组成。其中的三角形、矩形、平行四边形又可以由直线组成,而直线又是由两个点确定的。我们使用Python的turtle模块所提供的函数来绘制直线。在使用之前我们先介绍一下turtle模块的相关知识点。turtle模块提供面向对象和面向过程两种形式的海龟绘图基本组件。面向对象的接口类如下:1)TurtleScreen类:定义图形窗口作为绘图海龟的运动场。它的构造器需要一个tkinter.Canvas或ScrolledCanva
前面一篇关于智能合约翻译文讲到了,是一种计算机程序,既然是程序,那就可以使用程序语言去编写智能合约了。而若想玩区块链上的项目,大部分区块链项目都是开源的,能看得懂智能合约代码,或找出其中的漏洞,那么,学习Solidity这门高级的智能合约语言是有必要的,当然,这都得在公链``````以太坊上,毕竟国内的联盟链有些是不兼容Solidity。Solidity是一种面向对象的高级语言,用于实现智能合约。智能合约是管理以太坊状态下的账户行为的程序。Solidity是运行在以太坊(Ethereum)虚拟机(EVM)上,其语法受到了c++、python、javascript影响。Solidity是静态类型
文章目录概念索引相关操作创建索引更新副本查看索引删除索引索引的打开与关闭收缩索引索引别名查询索引别名文档相关操作新建文档查询文档更新文档删除文档映射相关操作查询文档映射创建静态映射创建索引并添加映射概念es中有三个概念要清楚,分别为索引、映射和文档(不用死记硬背,大概有个印象就可以)索引可理解为MySQL数据库;映射可理解为MySQL的表结构;文档可理解为MySQL表中的每行数据静态映射和动态映射上面已经介绍了,映射可理解为MySQL的表结构,在MySQL中,向表中插入数据是需要先创建表结构的;但在es中不必这样,可以直接插入文档,es可以根据插入的文档(数据),动态的创建映射(表结构),这就