OpenCV图像处理应用(面向Python)之色彩空间转换类型
Posted OpenCV小课堂
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenCV图像处理应用(面向Python)之色彩空间转换类型相关的知识,希望对你有一定的参考价值。
OpenCV图像处理应用(面向Python)
欢迎来到梁老湿课堂
版权声明:
作者: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()
多练多学多坚持,我们下期再见。
以上是关于OpenCV图像处理应用(面向Python)之色彩空间转换类型的主要内容,如果未能解决你的问题,请参考以下文章