图像色彩与几何变换

© Fu Xianjun. All Rights Reserved. 今天小赵带大家进入openCV的第三块内容图像色彩于几何变换,案例依然是通过了我们的小傅老师,这个为了我们夜以继日的男人!


前言

常见的色彩空间可以包括GRAY色彩空间、XYZ色彩空间、HVS色彩空间等,接下来我带大家走入色彩类型转换。


提示:以下是本篇文章正文内容,下面案例可供参考

一、为什么要转换图像色彩?

因为对于计算机来说,进行图像处理的时候时候往往要进行图像类型转换为实现我们的某个特定的处理提供必要的条件,给大家解释一下常见的几种颜色类型。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、几种常见的类型转换

1.引入库(话不多说直接上代码)

代码如下(示例):

import cv2
import numpy as np

2.读入数据

代码如下(示例):

#---------读取图片--------#
img=cv2.imread('pig.jpg')
#-------颜色转换----------#
rgb=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
bgr=cv2.cvtColor(rgb,cv2.COLOR_RGB2BGR)
gray=cv2.cvtColor(rgb,cv2.COLOR_RGB2GRAY)
graybian=cv2.cvtColor(gray,cv2.COLOR_GRAY2BGR)
g2h=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
#--------显示图片----------#
cv2.imshow('yuantu',img)
# cv2.imshow('RGB',rgb)
# cv2.imshow('bgr',bgr)
# cv2.imshow('gray',gray)
# cv2.imshow('graybian',graybian)
cv2.imshow('g2h',g2h)

cv2.waitKey(0)
cv2.destroyAllWindows()

代码效果展示如下

在这里插入图片描述

温馨提示:主要的变换格式是 返回的名字 = cv2.cvtColor(原图,色彩转换码)

在这里插入图片描述


3.针对图像类型HSV的一个例子(HSV表网上可见的很多)

代码展示如下

import cv2
import numpy as np
jianzhi=cv2.imread('jz.jpg')
cv2.imshow('jianzhi',jianzhi)
hsv=cv2.cvtColor(jianzhi,cv2.COLOR_BGR2HSV)
cv2.imshow('hsv',hsv)

lowerb_hsv=np.array([0,43,46])
upperb_hsv=np.array([10,255,255])
mask=cv2.inRange(hsv,lowerb_hsv,upperb_hsv)
r1=cv2.bitwise_and(jianzhi,jianzhi,mask=mask)


lowerb_hsv=np.array([156,43,46])
upperb_hsv=np.array([180,255,255])
mask=cv2.inRange(hsv,lowerb_hsv,upperb_hsv)
r2=cv2.bitwise_and(jianzhi,jianzhi,mask=mask)

r3=r1+r2
cv2.imshow('red1',r1)
cv2.imshow('red2',r2)
cv2.imshow('red3',r3)
cv2.waitKey(0)
cv2.destroyAllWindows()

代码效果展示如下
在这里插入图片描述

温馨提示:这里其实是调整了hsv参数的大小,从而上计算机处理后显示出在那个hsv范围内的可见图像


三、一些常见的几何变换(翻转,缩放、仿射和透视)

3.1 翻转以及缩放

翻转缩放代码展示如下

import cv2
import numpy as np

img=cv2.imread('pig.jpg')
h,w,c=img.shape
ResizeImg=cv2.resize(img,(w//2,h//2)) #resize是更改显示图片的大小,这里是同比例缩小到原来的二分之一
FlipImgx=cv2.flip(ResizeImg,0) #flip函数最后一位是图像改变方式(0是沿着x轴)
FlipImgy=cv2.flip(ResizeImg,1) # 沿着y轴
FlipImgxy=cv2.flip(ResizeImg,-1) #xy同时翻转

# cv2.imshow('yuantu',img)
cv2.imshow('ResizeImg',ResizeImg)
cv2.imshow('FlipImgx',FlipImgx)
cv2.imshow('FlipImgy',FlipImgy)
cv2.imshow('FlipImgxy',FlipImgxy)

cv2.waitKey(0)
cv2.destroyAllWindows()

代码效果展示如下

在这里插入图片描述


3.2 仿射以及透视

仿射代码展示如下

import cv2
import numpy as np

img=cv2.imread('pig.jpg')
h,w,c=img.shape
x=100
y=200

M=np.float32([[1,0,x],[0,1,y]]) # M代表用numpy函数创建的一个变换矩阵
MoveImg=cv2.warpAffine(img,M,(w*2,h*2)) #仿射在大小为原图长两倍宽两倍的一个矩形中 位置为x=100,y=200

cv2.imshow('img',img)
cv2.imshow('MoveImg',MoveImg)
cv2.waitKey(0)
cv2.destroyAllWindows()

代码效果展示如下
在这里插入图描述


透视代码展示如下

import cv2
import numpy as np

img=cv2.imread('pig.jpg')
h,w,c=img.shape

M=cv2.getRotationMatrix2D((w/2,h/2),60,1)
RotateImg=cv2.warpAffine(img,M,(w*2,h*2))

cv2.imshow('img',img)
cv2.imshow('MoveImg',RotateImg)
cv2.waitKey(0)
cv2.destroyAllWindows()

代码效果展示如下

在这里插入图片描述


3.3 小tirck拉直歪了的图像

代码展示如下

import cv2
import numpy as np

img=cv2.imread('lianxi.png')
h,w,c=img.shape

pst_o=np.float32([[46,178],[222,83],[61,290],[271,188]]) # 这里我们运用到了一个IrfanView 去找到了歪的那张图的四个顶的位置
pst_d=np.float32([[0,0],[100,0],[0,100],[100,100]])

M=cv2.getPerspectiveTransform(pst_o,pst_d)
dst=cv2.warpPerspective(img,M,(100,100))

cv2.imshow('img',img)
cv2.imshow('dst',dst)
cv2.waitKey(0)
cv2.destroyAllWindows()

代码效果展示如下

在这里插入图片描述


# 总结 提示:这里对文章进行总结: 例如:以上就是今天要讲的内容,本文仅仅简单介绍了图像颜色转化以及几何变换
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值