opencv图像拷贝,opencv mat拷贝
点击上方“nqddx学习视界”,选择添加‘明星’或‘顶尖’重磅干货,第一时间送达本期。我们将解释如何在Python中镜像或翻转图像。你只需要知道各种矩阵运算和矩阵运算背后的基础数学。
01. 依赖包要求
NumPy—用于矩阵运算和处理。
OpenCV——用于读取图像并将其转换为2D数组(矩阵)。
matplotlib—用于将矩阵绘制为图像。
对于这个小项目,我使用了著名的Lena图像,它主要用于测试计算机视觉模型。确保下载该图像并保存在当前工作目录中。
从matplotlib导入cv2将numpy作为NP导入pyplot作为plt02. 让我们开始吧
首先,我们使用imread()模块中的方法读取图像文件cv2。为此,我们只需要导入包并使用它。因此,通过这样做,我们得到矩阵形式的图像。默认情况下,imread()通过该方法读取的图像是BGR(蓝、绿、红)格式。要读取的图像转换成常规格式,也就是RGB(红、绿、蓝),我们使用来自同一个模块的cvtColor()方法cv2。
def read_this(image_file,gray _ scale=False):image _ src=cv2 . im read(image _ file)if gray _ scale:image _ RGB=cv2 . CVT color(image _ src,2 .color _ bgr 2 gray)else:image _ RGB=cv2 . CVT color(image _ src,cv2 . color _ bgr 2 RGB)return image _ RGB上述函数从传递的图像文件中返回图像矩阵。如果我们想得到图像矩阵或格式,它由一般的If和else条件组成。
镜像图像
为了基本上镜像图像,我们需要从左到右逐行反转矩阵。让我们考虑一个矩阵a。
A=[[4,1,1],[2,8,0],[3,8,1]]如果我们镜像这个矩阵(逐行),它将是-
导入numpy为NP mirror _=NP . fliplr(a)mirror _[[1,1,4],[0,8,2],[1,8,3]]我们也可以不使用NumPy模块来执行这个操作。如果是这样,我们可以使用循环并反转每一行。对图像矩阵执行相同的操作需要一些时间,因为它们是非常大的矩阵,我们不希望我们的代码执行得非常慢。
def mirror_this(image_file,gray_scale=False,with _ plot=False):image _ RGB=read _ this(image _ file=image _ file,gray _ scale=gray _ scale)image _ mirror=NP . fliplr(image _ RGB)if with _ plot:fig=PLT . fig(fig size=(10,20)) ax1=fig.add_subplot(2,2,1)ax1 . axis( off )ax1 . title . set _ text( Original )ax2=fig . add
让我们画出同样的内容-
mirror _ this(image _ file= Lena _ original . png ,with_plot=True)
mirror _ this(image _ file= Lena _ original . png ,gray_scale=True,with_plot=True)
翻转图像
为了基本翻转图像,我们需要从上到下逐列反转矩阵。让我们考虑一个矩阵b。
B=[[4,1,1],[2,8,0],[3,8,1]]如果我们翻转这个矩阵(按列),它将是-
导入numpy为NP flip _=np.flipud (b) flip _ [[3,8,1],[2,8,0],[4,1,1]]我们用NumPy来翻转矩阵以保持代码稳固。
def flip_this(image_file,gray_scale=False,with _ plot=False):image _ RGB=read _ this(image _ file=image _ file,gray _ scale=gray _ scale)image _ flip=NP。翻转ud(image _ RGB)if with _ plot:fig=PLT。fig(fig size=(10,20)) ax1=fig.add_subplot(2,2,1)ax1。轴(“关”)ax1。标题。set _ text( Original )ax2=图添加上面的函数返回一个图像矩阵,该矩阵从上向下向下按列反转或翻转。
让我们绘制相同的内容-
flip _ this(image _ file= Lena _ original。png ,with_plot=True)
flip _ this(image _ file= Lena _ original。png ,gray_scale=True,with_plot=True)
完整的代码
class imageopsfromstrack(object):def _ _ init _ _(self,image _ file):self。image _ file=image _ file def read _ this(self,gray _ scale=False):image _ src=cv2。我在读(自我。image _ file)如果gray _ scale:image _ RGB=cv2。CVT颜色(image _ src,cv2。COLOR _ bgr 2 gray)else:image _ RGB=cv2。CVT颜色(image _ src,cv2 .COLOR_BGR2RGB)返回image_rgb def mirror_this(self,with_plot=True,gray _ scale=False):image _ RGB=self。read _ this(gray _ scale=灰度级)image _ mirror=NP。fliplr(image _ RGB)if with _ plot:self。plot _ it(orig _ matrix=image _ RGB,trans_matrix=image_mirror,head_text=镜像,gray _ scale=gray _ scale)返回没有人返回image_mirror def flip_this(self,with _ plot
IMO=imageopsfromstrack(image _ file= Lena _ original。png )# #镜像# # # IMO。mirror _ this()IMO。mirror _ this(gray _ scale=True)# #翻转# # # IMO。flip _ this()IMO。flip _ this(灰度=真)将显示以上图像结果。现在,所有内容都已排序,我们可以创建其他图像操作,例如均衡化(),曝晒()等等。
基本图像操作包
在「下载1:OpenCV-Contrib扩展模块中文版教程」公众号后台回复:nqddx学视觉扩展模块中文教程即可下载全网第一份开放计算机视觉扩展模块教程中文版,涵盖,等二十多章内容。
扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理
在「下载2:Python视觉实战项目31讲」公众号后台回复:nqddx学视觉Python视觉实战项目31讲即可下载包括,等31个视觉实战项目,助力快速学校计算机视觉。
图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别
在「下载3:OpenCV实战项目20讲」公众号后台回复:nqddx学视觉OpenCV实战项目20讲即可下载含有,个基于20实现20个OpenCV,实现开放计算机视觉学习进阶。
实战项目
在「下载4:leetcode算法开源书」公众号后台回复:nqddx学视觉leetcode即可下载。每题都运行时间超过100%的开源好书,你值得拥有!
交流群
欢迎加入读者微信官方账号,与同行交流。目前有SLAM、3D视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群。(以后会逐步细分)。请扫描以下微信号添加群。备注:“昵称学校/公司的研究方向”,例如:“wydrs上海交大视觉SLAM”。请按格式备注,否则不能通过。添加成功后,会根据研究方向邀请你进入相关微信群。,在群里发广告,不然就请你出群。谢谢理解~
如何在CSS中设置div滚动条的样式
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。