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滚动条的样式