win10+Python3.7.3+OpenCV3.4.1入门学习(四)————4.2图像类型转换

Python版本是Python3.7.3,OpenCV版本OpenCV.3.4.1,开发环境为PyCharm

在OpenCV内,我们使用cv2.cvtColor()函数实现色彩空间的变换。该函数能够实现多个色彩空间之间的转换。其语法格式为:

dst = cv2.cvtColor( src, code [, dstCn] )

式中:
● dst表示输出图像,与原始输入图像具有同样的数据类型和深度。
● src表示原始输入图像。可以是8位无符号图像、16位无符号图像,或者单精度浮点数等。
● code是色彩空间转换码,表4-2展示了其枚举值。
● dstCn是目标图像的通道数。如果参数为默认的0,则通道数自动通过原始输入图像和code得到。

eg1:将图像在BGR模式和灰度图像之间相互转换。
程序如下:

#RGB<->GRAY
import cv2
lena=cv2.imread("lenacolor.png")
gray=cv2.cvtColor(lena,cv2.COLOR_BGR2GRAY)
rgb=cv2.cvtColor(gray,cv2.COLOR_GRAY2BGR)
#==========打印shape============
print("lena.shape=",lena.shape)
print("gray.shape=",gray.shape)
print("rgb.shape=",rgb.shape)
#==========显示效果============
cv2.imshow("lena",lena)
cv2.imshow("gray",gray)
cv2.imshow("rgb",rgb)
cv2.waitKey()
cv2.destroyAllWindows()

运行程序,会显示各个图像的shape属性:

lena.shape= (512, 512, 3)
gray.shape= (512, 512)
rgb.shape= (512, 512, 3)

通过其shape属性,可以看到图像在转换前后的色彩空间变化情况。
同时,程序会分别显示原始彩色图像、灰度图像、RGB图像。需要注意,在通过“rgb=cv2.cvtColor(gray, cv2.COLOR_GRAY2BGR)”得到的RGB图像中,B通道、G通道、R通道的值都是一样的,所以其看起来仍是灰度图像。
win10+Python3.7.3+OpenCV3.4.1入门学习(四)————4.2图像类型转换_第1张图片win10+Python3.7.3+OpenCV3.4.1入门学习(四)————4.2图像类型转换_第2张图片win10+Python3.7.3+OpenCV3.4.1入门学习(四)————4.2图像类型转换_第3张图片

eg2:将图像从BGR模式转换为RGB模式。
程序如下:

import cv2
lena=cv2.imread("lenacolor.png")
rgb = cv2.cvtColor(lena, cv2.COLOR_BGR2RGB)
cv2.imshow("lena",lena)
cv2.imshow("rgb",rgb)
cv2.waitKey()
cv2.destroyAllWindows()

运行程序,会显示如下图所示的运行结果。左图是BGR通道顺序的图像,右图是RGB通道顺序的图像。可以看到,读取的lena图像在BGR模式下正常显示,将其调整为RGB通道顺序后,显示的图像呈现浅蓝色。
win10+Python3.7.3+OpenCV3.4.1入门学习(四)————4.2图像类型转换_第4张图片win10+Python3.7.3+OpenCV3.4.1入门学习(四)————4.2图像类型转换_第5张图片

win10+Python3.7.3+OpenCV3.4.1入门学习(四)————4.2图像类型转换_第6张图片
win10+Python3.7.3+OpenCV3.4.1入门学习(四)————4.2图像类型转换_第7张图片
win10+Python3.7.3+OpenCV3.4.1入门学习(四)————4.2图像类型转换_第8张图片

win10+Python3.7.3+OpenCV3.4.1入门学习(四)————4.2图像类型转换_第9张图片
win10+Python3.7.3+OpenCV3.4.1入门学习(四)————4.2图像类型转换_第10张图片

你可能感兴趣的:(Python-OpenCV,Python-opencv,图像处理,图像类型转换)