OpenCV:圖像的顏色空間轉換


導包:

import numpy as np
import cv2
import matplotlib.pyplot as plt
def show(image):
    plt.imshow(image)
    plt.axis('off')
    plt.show()
def imread(image):
    image=cv2.imread(image)
    image=cv2.cvtColor(image,cv2.COLOR_BGR2RGB)
    return image

RGB當中每一個顏色都有256階亮度,每一階都對應着一個亮度:

image=imread("123.jpg")
(R,G,B)=cv2.split(image)#這里將通道進行拆分
print(image.shape)
print(image.shape[:2])
zeros=np.zeros(image.shape[:2],dtype='uint8')#這里只取了圖像三要素當中的前面部分,畢竟通道拆分之后其顏色空間就僅有一個了
show(cv2.merge([R,zeros,zeros]))
show(cv2.merge([zeros,G,zeros]))
show(cv2.merge([zeros,zeros,B]))#merge是將通道進行合並

顏色空間的HSV模型。 H代表的是顏色的色調,一共從0—360度。每一度代表這不同的顏色模型 S:代表飽和度,飽和度的取值范圍是%0—100,如果飽和度越大,則白色的占有率越小,顏色則越飽滿,飽和度越小則白色越明顯。 V:代表明度,取值是%0——100,0表示的最黑,100表示的是最亮

#由於我們在opencv當中的顏色最開始都是采用的是BGR的模式,然后我們之前編寫的函數將BGR轉換成了RGB的模式,但是在這里我們需要重新將RGB的格式
#更改為HSV的格式才對
image=imread("123.jpg")
hsv=cv2.cvtColor(image,cv2.COLOR_RGB2HSV)
print(image.shape)
print(image.shape[:2])
zeros=np.zeros(image.shape[:2],dtype='uint8')#這里只取了圖像三要素當中的前面部分,畢竟通道拆分之后其顏色空間就僅有一個了
for (name,chan) in zip(('H','S','V'),cv2.split(hsv)):
    cv2.imshow(name,chan)
cv2.waitKey(0)
cv2.destroyAllWindows()

下面展示灰度圖的顯示,這個在我們圖像處理當中的是最為常用的:

image=cv2.imread("123.jpg")#這里用自帶的方法讀取圖片就不會出現圖片顯示不正確的結果了
gray=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
cv2.imshow('original',image)
cv2.imshow('gray',gray)
cv2.waitKey(0)
cv2.destroyAllWindows()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM