Opencv+Python笔记(二)图像的基本操作

1.颜色通道提取

b, g, r = cv2.split(img)  #将img的BGR拆分并赋到b,g,r上
img=cv2.merge((b,g,r))  #颜色通道合并
#注意顺序是BGR

2.色彩通道转换

Opencv API:

img = cv.cvtColor(src,code)

输入:1.src:待转换的图像 2.code:转换类型
类型例如:
cv.COLOR_BGR2RGB
cv.COLOR_BGR2GRAY
cv.COLOR_GRAY2BGR
cv.COLOR_BGR2HSV
输出:转化后的图像

3.绘制矩形

Opencv API:

cv2.rectangle(img,pt1,pt2,color,thickness,lineType)

输入:1.img:要绘制的图像,2.pt1 pt2:绘制的左上角与右下角,3.color:颜色,4.thickness:绘制图线宽度(可省略),5。lineType:线型 LINE_8(默认,更快), LINE_4 , LINE_AA(更美观)

4.边界填充

Opencv API:

img = cv2.copyMakeBorder(src, top_size, bottom_size, left_size, right_size, borderType)

输入:1.src:原图像 2.top_size,bottom_size,left_size,right_size 边界各填充多少 3.borderType填充方式
#BORDER_REPLICATE:复制法,也就是复制最边缘像素。
#BORDER_REFLECT:反射法,对感兴趣的图像中的像素在两边进行复制例如:fedcba|abcdefgh|hgfedcb
#BORDER_REFLECT_101:反射法2,也就是以最边缘像素为轴,对称,gfedcb|abcdefgh|gfedcba
#BORDER_WRAP:外包装法,cdefgh|abcdefgh|abcdefg 以原图片在边缘复制
#BORDER_CONSTANT:常量法,常数值填充。

5.图像的几何变换

1、什么是图像的几何变换?
图像的几何变换就是将一组图像数据经过某种数学运算,映射成另外一组图像数据的操作。所以,几何变换的关键就是要确定这种空间映射关系。
几何变换又称空间变换。对于图像数据来说,就是将一幅图像中的坐标位置映射到另一幅图像中的新坐标位置。或者说,几何变换不改变图像的像素值,只是在图像平面上进行像素的重新安排。
2、为什么要对图像进行几何变换?
对图像进行几何变换可以一定程度上的消除图像由于角度、透视关系、拍摄等原因造成的几何失真,进而造成计算机模型或者算法无法正确识别图像,所以我们要对图像进行几何变换。
几何变换不是取悦人眼的,是取悦计算机的,是让计算机(模型、算法)能更好的认识图片的。所以,对图像进行几何变换处理是深度学习中数据增强的一种常用手段,是进行图像识别前的数据预处理工作内容。
比如,在很多机器视觉落地项目中,在实际工作中,我们并不能保证被检测的物体在图像的相同位置和方向,所以我们首先要解决的就是被检测物体的位置和方向。所以我们首先要做的就是对图像进行几何变换。

a.图像的缩放

Opencv API:

cv2.resize(src, dsize, fx, fy, interpolation)

输入:1.src:输入的图像;2.dsize:将图像调整到的dsize尺寸;3.fx和fy:当dsize为None时,fx和fy为图像在x轴和y轴的缩放比例因子;4.interpolation:插值方法

插值含义
cv2.INTER_LINEAR双线性插值法
cv2.INTER_NEAREST最近邻插值
cv2.INTER_AREA像素区域重采样(默认)
cv2.INTER_CUBIC双三次插值
b.图像的翻转变换

Opencv API:

cv2.flip(src, flipcode)

输入:1.src:要翻转的图像;2.flipcode:flipcode=0 表示绕x轴翻转;flipcode=任意正整数,比如1,2,3,表示绕y轴翻转;flipcode=任意负整数,比如-1,-2,-3,表示绕x轴和y轴同时翻转
输出:一个和src相同类型的图像即src翻转后的图像

c.图像金字塔
在说明什么是图像金字塔的过程之前,我们需要需要了解一个概念:尺度
尺度,顾名思义就是说图像的尺寸和分辨率。在我们进行图像处理的时候,会经常对源图像的尺寸进行放大或者缩小的变换,进而转换为我们指定尺寸的目标图像。在对图像进行放大和缩小的变换的这个过程,我们称为尺度调整。

而图像金字塔则是图像多尺度调整表达的一种重要的方式,图像金字塔方法的原理是:将参加融合的的每幅图像分解为多尺度的金字塔图像序列,将低分辨率的图像在上层,高分辨率的图像在下层,上层图像的大小为前一层图像大小的1/4。层数为0,1,2……N。将所有图像的金字塔在相应层上以一定的规则融合,就可得到合成金字塔,再将该合成金字塔按照金字塔生成的逆过程进行重构,得到融合金字塔。这个总的思路就是一下所有基于金字塔融合的算法过程,不同点就在于分解构造的金字塔不同,每层的融合规则不一样,重构的方法不同而已。

在这里插入图片描述

1. 高斯金字塔 主要用于向下采样
(1)下采样
在这里插入图片描述
(2)上采样

在这里插入图片描述
OpencvAPI:

cv2.pyrUp(src)  # 上采样操作
cv2.pyrDown(src)  # 下采样操作

输入:src:要进行上下采样的图片
输出:采样操作后的图片

2. 拉普拉斯金字塔

在这里插入图片描述
代码:

img_down = cv2.pyrDown(src)
img_down_up = cv2.pyrUp(down)
img_lap=src - img_down_up
cv_show('img_lap', img_lap)

6.获取感兴趣区域ROI

对于一个图像img img[a, b, c] (a, b)为图像坐标 c为颜色通道

my_roi = img[0:100, 0:100]  #获取x:0-100,y:0-100的图像
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值