Opencv第四章 图像转换

OpenCV 第四章 图像变换

4.1 色彩空间变换

色彩空间也称色彩模型、颜色空间、色彩模型等,它是图像在计算机内部的一种存储方式,常见的色彩空间包括RGB、GRAY、XYZ、YCrCb、HSV。每种色彩空间都有其擅长的问题解决领域,所以在解决具体色彩问题时往往需要进行色彩空间类型转换。
基本格式:

        dst=cv2.cvtColor(src,code[,dstCn])
转换后的图像=cv2.cvtColor(原图,色彩空间类型转换码  [,目标图像的通道数  该项可不写])

色彩空间转换代码:

import cv2

img=cv2.imread('E:\pictures\\3.jpg')
cv2.imshow('BGR',img)
img2=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
cv2.imshow('GRAY',img2)

cv2.waitKey(0)

RGB色彩空间转换
在这里插入图片描述
GRAY色彩空间转换
在这里插入图片描述
YCrCb色彩空间转换
Y:亮度 Cr:红色 Cb:蓝色
在这里插入图片描述
HSV色彩空间转换
H:色调 S:饱和度 V:亮度
在这里插入图片描述

4.2 几何变换

几何变换是指对图像执行放大、缩小、旋转等各种操作

缩小
基本格式:

  dst=cv2.resize(src,dsize[,dst[,fx[,fy[,interpolation]]]])
  dsize表示转换后的图像大小
  fx表示水平方向的缩放比例
  fy表示垂直方向的缩放比例

注意点:

  • 目标图像的类型与原图像一致,大小可以通过参数dsize和fs和fy来确定
  • dsize参数不为None时,无视fx和fy,格式为(width,height)
  • 当dsize参数为None时,fx和fy不能设置为0

例子:

import cv2
img=cv2.imread('E:\pictures\\3.jpg')
sc=[1,0.2,0.5,1.5,2]     //自己设置的缩放比例存入列表中
cv2.imshow('show',img)
while True:
 key=cv2.waitKey()
 if 48<= key <=52:   //ascii,0,1,2,3,4
   x=y=sc[key-48]    //列表下表取值
   img2=cv2.resize(img,None,fx=x,fy=y)
   cv2.imshow('show2',img2)

缩小为原图的20%
在这里插入图片描述
翻转
flip函数用于翻转图像

dst=cv2.flip(src,flipCode)  
flipCode表示翻转类型,为0时绕X轴旋转,大于0时绕y轴旋转,小于0时绕x轴和y轴旋转
import cv2
img=cv2.imread('E:\pictures\\3.jpg')
cv2.imshow('show',img)
while True:
 key=cv2.waitKey()
 if key==48:
     img2=img
 elif key==49:
     img2=cv2.flip(img,0)
 elif key==50:
     img2=cv2.flip(img,1)
 elif key==51:
     img2=cv2.flip(img,-1)
 cv2.imshow('flip',img2)

在这里插入图片描述

仿射

放射变换包含了平移、旋转、缩放等操作,是一种二维坐标到二维坐标之间的线性变换。
请添加图片描述

这四小结调用的函数都一样,只是转换矩阵不同
主要特点:原图像中的所有平行线在转换后的图像中仍然平行
OpenCV的cv2.warpAffine()函数用于实现图像的仿射变换,基本格式如下:

dst=cv2.warpAffine(src,M,dsize)
 src:原图
 M:矩阵
 dsize:转换后的图像大小
 省略可选参数时,图像转换的矩阵运算公式如下:
 dst(x,y)=src(M11X + M12y + M13 , M21x + M22y + M23)

平移
平移是指图像沿水平或者垂直方向移动一定的像素。假设将图像水平移动m个像素,垂直移动n个像素
转换矩阵M如下:

M=| 1  0  m |
  | 0  1  n |
import cv2
import numpy as np
img=cv2.imread('E:\pictures\\3.jpg')
cv2.imshow('show',img)

height=img.shape[0]
width=img.shape[1]
dsize=(width,height)

m=np.float32([[1,0,100],[0,1,50]])       //M矩阵
img2=cv2.warpAffine(img,m,dsize)       //调用函数

cv2.imshow('show2',img2)
cv2.waitKey(0)

在这里插入图片描述
缩放
宽度缩放比例为h,高度缩放比例为v
根据图像转换的矩阵运算公式可以得出执行缩放的转换矩阵M

M=| h  0  0 |
  | 0  v  0 |
import cv2
import numpy as np
img=cv2.imread('E:\pictures\\3.jpg')
cv2.imshow('show',img)

height=img.shape[0]
width=img.shape[1]
dsize=(width,height)

m=np.float32([[0.5,0,0],[0,0.5,0]])
img2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值