📜  Python|在不同颜色空间中可视化图像

📅  最后修改于: 2022-05-13 01:55:48.893000             🧑  作者: Mango

Python|在不同颜色空间中可视化图像

OpenCV(Open Source Computer Vision)是一个计算机视觉库,包含对图片或视频执行操作的各种功能。它最初由 Intel 开发,但后来由 Willow Garage 维护,现在由 Itseez 维护。该库是跨平台的,可用于多种编程语言,如Python、C++ 等。

让我们讨论可视化图像的不同方法,我们将以不同的格式表示图像,如灰度、RGB 比例、Hot_map、边缘图、光谱图等。

RGB 图像:

RGB 图像由 R(Red)、G(Green) 和 B(Blue) 3 个不同通道的线性组合表示。此颜色空间中的像素强度由单个通道的 0 到 255 范围内的值表示。因此,由一个像素表示的一种颜色的可能性数量约为 1600 万 [255 x 255 x 255 ]。

# Python program to read image as RGB
  
# Importing cv2 and matplotlib module
import cv2
import matplotlib.pyplot as plt
  
# reads image as RGB
img = cv2.imread('g4g.png')
  
# shows the image
plt.imshow(img)

输出 :

灰度图像:

灰度图像仅包含单个通道。此颜色空间中的像素强度由 0 到 255 范围内的值表示。因此,由一个像素表示的一种颜色的可能性数为 256。

# Python program to read image as GrayScale
  
# Importing cv2 module
import cv2
  
# Reads image as gray scale
img = cv2.imread('g4g.png', 0) 
  
# We can alternatively convert
# image by using cv2color
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
  
# Shows the image
cv2.imshow('image', img) 
  
cv2.waitKey(0)         
cv2.destroyAllWindows()

输出 :

YCrCb 颜色空间:

Y 代表 Luminance 或 Luma 分量,Cb 和 Cr 是 Chroma 分量。 Cb 表示蓝色差(蓝色分量和亮度分量的差)。 Cr 表示红色差(红色分量和亮度分量的差)。

# Python program to read image
# as YCrCb color space
  
# Import cv2 module
import cv2
  
# Reads the image
img = cv2.imread('g4g.png')
  
# Convert to YCrCb color space
img = cv2.cvtColor(img, cv2.COLOR_BGR2YCrCb)
  
# Shows the image
cv2.imshow('image', img) 
  
cv2.waitKey(0)         
cv2.destroyAllWindows()

输出 :

HSV色彩空间:

H:色调代表主波长。
S:饱和度代表颜色的深浅。
V:值代表强度。

# Python program to read image
# as HSV color space
  
# Importing cv2 module
import cv2
  
# Reads the image
img = cv2.imread('g4g.png')
  
# Converts to HSV color space
img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
  
# Shows the image
cv2.imshow('image', img) 
  
cv2.waitKey(0)         
cv2.destroyAllWindows()

输出 :

实验室色彩空间:

L——代表亮度。
A –从绿色到洋红色的颜色分量。
B –从蓝色到黄色的颜色分量。

# Python program to read image
# as LAB color space
  
# Importing cv2 module
import cv2
  
# Reads the image
img = cv2.imread('g4g.png')
  
# Converts to LAB color space
img = cv2.cvtColor(img, cv2.COLOR_BGR2LAB)
  
# Shows the image
cv2.imshow('image', img) 
  
cv2.waitKey(0)         
cv2.destroyAllWindows()

输出 :

图像边缘图:

边缘图可以通过拉普拉斯算子、索贝尔等各种滤波器获得。这里,我们使用拉普拉斯算子生成边缘图。

# Python program to read image
# as EdgeMap
  
# Importing cv2 module
import cv2
  
# Reads the image
img = cv2.imread('g4g.png')
  
  
laplacian = cv2.Laplacian(img, cv2.CV_64F)
cv2.imshow('EdgeMap', laplacian) 
  
cv2.waitKey(0)         
cv2.destroyAllWindows()

输出 :

图像热图:

在热图表示中,矩阵中包含的各个值表示为颜色。

# Python program to visualize 
# Heat map of image
  
# Importing matplotlib and cv2
import matplotlib.pyplot as plt
import cv2
  
# reads the image
img = cv2.imread('g4g.png')
  
# plot heat map image
plt.imshow(img, cmap ='hot') 

输出 :

光谱图:

Spectral Image map 获取场景图像中每个像素的光谱。

# Python program to visualize 
# Spectral map of image
  
# Importing matplotlib and cv2
import matplotlib.pyplot as plt
import cv2
  
img = cv2.imread('g4g.png')
plt.imshow(img, cmap ='nipy_spectral') 

输出 :