> 文档中心 > OpenCV图像处理应用(面向Python)之色彩空间转换类型

OpenCV图像处理应用(面向Python)之色彩空间转换类型

OpenCV图像处理应用(面向Python)

    • 欢迎来到梁老湿课堂
    • 我们首先要对**RGB,GRAY,HSV和RGBA**色彩空间的概念有大致的了解。
    • 色彩空间的转换函数
    • 实现颜色提取:提取指定颜色
    • 学会几何变换,并且实现图像的几何变换
    • 多练多学多坚持,我们下期再见。

欢迎来到梁老湿课堂

版权声明:
作者:OpenCV小课堂
导师:Fu Xianjun
本文版权归作者导师共有,欢迎转载,但未经作者同意必须在文章页面注明来源及原作者或原文链接,否则保留追究法律责任的权利。

我们首先要对RGB,GRAY,HSV和RGBA色彩空间的概念有大致的了解。

1.RGB在这里插入图片描述
2.GRAY
在这里插入图片描述
3.HSV
在这里插入图片描述
4.RGBA
RGBA是代表Red(红色)Green(绿色)Blue(蓝色)和Alpha的色彩空间。虽然它有的时候被描述为一个颜色空间,但是它其实仅仅是RGB模型的附加了额外的信息。采用的颜色是RGB,可以属于任何一种RGB颜色空间.

色彩空间的转换函数

使用cv2.cvtColor()函数,实现各种色彩空间的转换格式为:
dst=cv2.cvtColor(src,code)
dst为输出图像
src为原图
code是色彩空间转换码(转换码有很多,可以在百度查到,也可以参考以下,后续只需要改code就可以啦)
在这里插入图片描述
在这里插入图片描述

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

实现颜色提取:提取指定颜色

在这里插入图片描述
dst=cv2.inRange()函数
dst为输出图像
src为原图
lowerb表示范围下界
upperb表示范围上界
在这里插入图片描述
源代码:
import cv2
import numpy as np
img2=cv2.imread(“pig.jpg”)
cv2.imshow(“SRC”,img2)
hsv = cv2.cvtColor(img2, cv2.COLOR_BGR2HSV)#图像类型转换函数
cv2.imshow(“HSV”,hsv)
lowerb_hsv = np.array([156,43,46])#要识别颜色的下界
upperb_hsv = np.array([180,255,255])#要识别的颜色的上界
mask = cv2.inRange(hsv, lowerb_hsv, upperb_hsv)
cv2.imshow(“MASK”,mask)
cv2.waitKey(0)
cv2.destroyAllWindows()
只需修改对应的上界和下界即可

学会几何变换,并且实现图像的几何变换

1.缩放:
img_resize=cv2.resize(img,None,fx=1,fy=0.5)
dst:为输出目标图像
src:原图
dsize:输出图像大小
fx:水平方向的缩放比例
fy:垂直方向的缩放比例
在这里插入图片描述
源代码:
import cv2
img=cv2.imread(“lina.png”)
h,w,c=img.shape
img_resize=cv2.resize(img,None,fx=1,fy=0.5)
cv2.imshow(‘lina’,img_resize)
cv2.imshow(‘lina1’,img)
cv2.waitKey()
cv2.destroyAllWindows()
修改fx,fy的值可获得不一样的效果
2.翻转:
img1=cv2.flip(img,-1)
img1为修改后输出的图像
img为原图
-1为旋转类型,0绕x轴翻转,正数绕着y轴翻转,负数绕x,y轴同时翻转
在这里插入图片描述
源代码:
import cv2
img=cv2.imread(“lina.png”)
img1=cv2.flip(img,-1)
img2=cv2.flip(img,0)
img3=cv2.flip(img,1)
cv2.imshow(‘lina’,img)
cv2.imshow(‘lina1’,img1)
cv2.imshow(‘lina2’,img2)
cv2.imshow(‘lina3’,img3)
cv2.waitKey()
cv2.destroyAllWindows()
修改旋转类型参数可获得不一样的翻转图像
3.仿射:
dst=cv2.warpAffine(src,M,dsize)
dst是输出图像
src是原图
M代表2×3的变换矩阵,使用不同变换矩阵,可实现不同放射变换
dsize代表输出图像的尺寸大小
下面是仿射之平移
在这里插入图片描述
源代码:
import cv2
import numpy as np
img=cv2.imread(“lina.png”)
h,w,c=img.shape
x=200
y=200
M=np.float32([[1,0,x],[0,1,y]])
img_move=cv2.warpAffine(img,M,(w,h))
cv2.imshow(‘lina’,img_move)
cv2.imshow(‘lina1’,img)
cv2.waitKey()
cv2.destroyAllWindows()
仿射之旋转
M=cv2.getRotationMatrix2D((center,angle,scale)
center为旋转中心
angle旋转角度,正数表示逆时针,负数表示顺时针
scale为变换尺度(即缩放大小)
在这里插入图片描述
源代码:
import cv2
img=cv2.imread(“lina.png”)
h,w,c=img.shape
M=cv2.getRotationMatrix2D((w/2,h/2),90,1)
lyp=cv2.warpAffine(img,M,(w,h))
cv2.imshow(‘lina’,lyp)
cv2.imshow(‘lina1’,img)
cv2.waitKey()
cv2.destroyAllWindows()
4.透视:
img1=np.float32([[46,180],[222,79],[62,288],[268,183]])
img2=np.float32([[0, 0], [600, 0], [0, 600], [600, 600]])
M=cv2.getPerspectiveTransform(img1,img2)
img3=cv2.warpPerspective(img,M,(600,600))
img1为输入图像的四个顶点坐标
img2输出图像的四个顶点坐标
M代表一个3×3的变换矩阵
img3最终输出结果
img原图
在这里插入图片描述
源代码:
import cv2
import numpy as np
img=cv2.imread(“lina.png”)
h,w,c=img.shape
img1=np.float32([[46,180],[222,79],[62,288],[268,183]])
img2=np.float32([[0, 0], [600, 0], [0, 600], [600, 600]])
M=cv2.getPerspectiveTransform(img1,img2)
img3=cv2.warpPerspective(img,M,(600,600))
cv2.imshow(‘img’,img)
cv2.imshow(‘img3’,img3)
cv2.waitKey(0)
cv2.destroyAllWindows()

多练多学多坚持,我们下期再见。

51声卡推荐网