1.颜色空间转换
OpenCV中有150多种颜色空间转换方法。但是我们将研究只有两个最广泛使用的,BGR↔Gray 和BGR↔HSV,BGR和灰度图的转换使用 cv2.COLOR_BGR2GRAY ,
BGR和HSV的转换使用 cv2.COLOR_BGR2HSV。在HSV空间中,H表示色彩/色度,取值范围 [0,179],S表示饱和度,取值范围 [0,255],V表示亮度,取值范围 [0,255]。但是不同的软件使用值不同
dst = cv.cvtColor( src, code[, dst[, dstCn]] )
参数:
src:输入图像:8位无符号,16位无符号(CV_16UC…),或单精度浮点。
code:转换方式
dst:与原图像深度大小相同的输出图像。可省略
dstCn:标图像通道数,默认为0,表示由src和code决定。
打印所有的code:
import cv2 as cv flags = [i for i in dir(cv) if i.startswith('COLOR_')] print(flags)
函数说明:
该函数将输入图像从一个颜色空间转换为另一个颜色空间。
举例
import matplotlib.pyplot as plt import cv2 img_BGR = cv2.imread('2.jpg') # BGR plt.subplot(331), plt.imshow(img_BGR), plt.axis('off'), plt.title('BGR') img_RGB = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2RGB) plt.subplot(332), plt.imshow(img_RGB), plt.axis('off'), plt.title('RGB') img_GRAY = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2GRAY) plt.subplot(333), plt.imshow(img_GRAY), plt.axis('off'), plt.title('GRAY') img_HSV = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2HSV) plt.subplot(334), plt.imshow(img_HSV), plt.axis('off'), plt.title('HSV') img_YcrCb = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2YCrCb) plt.subplot(335), plt.imshow(img_YcrCb), plt.axis('off'), plt.title('YcrCb') img_HLS = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2HLS) plt.subplot(336), plt.imshow(img_HLS), plt.axis('off'), plt.title('HLS') img_XYZ = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2XYZ) plt.subplot(337), plt.imshow(img_XYZ), plt.axis('off'), plt.title('XYZ') img_LAB = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2LAB) plt.subplot(338), plt.imshow(img_LAB), plt.axis('off'), plt.title('LAB') img_YUV = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2YUV) plt.subplot(339), plt.imshow(img_YUV), plt.axis('off'), plt.title('YUV') plt.show() cv2.imshow('gray', img_GRAY) k = cv2.waitKey(0) # 始终检测键盘 if k == 27: # 按ESC退出 cv2.destroyAllWindows()