opencv图像拷贝,opencv mat拷贝

  opencv图像拷贝,opencv mat拷贝

  点击上方“nqddx学习视界”,选择添加‘明星’或‘顶尖’重磅干货,第一时间送达本期。我们将解释如何在Python中镜像或翻转图像。你只需要知道各种矩阵运算和矩阵运算背后的基础数学。

  

01. 依赖包要求

  NumPy—用于矩阵运算和处理。

  OpenCV——用于读取图像并将其转换为2D数组(矩阵)。

  matplotlib—用于将矩阵绘制为图像。

  对于这个小项目,我使用了著名的Lena图像,它主要用于测试计算机视觉模型。确保下载该图像并保存在当前工作目录中。

  从matplotlib导入cv2将numpy作为NP导入pyplot作为plt

02. 让我们开始吧

  首先,我们使用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滚动条的样式

opencv图像拷贝,opencv mat拷贝