目錄
一、前言
二、使用OpenCV提取RGB顏色通道
三、合并RGB顏色通道
一、前言
當(dāng)涉及到圖像處理和計(jì)算機(jī)視覺時(shí),顏色通道(RGB通道)的提取是一個(gè)重要的步驟。而OpenCV是一個(gè)強(qiáng)大的計(jì)算機(jī)視覺庫,它提供了許多功能,包括圖像處理。
什么是RGB顏色通道?
在數(shù)字圖像中,顏色通道指的是構(gòu)成圖像的基本顏色成分。RGB通道代表紅色(R)、綠色(G)和藍(lán)色(B)通道。這三個(gè)通道組合在一起創(chuàng)建了圖像的彩色。每個(gè)通道包含了對(duì)應(yīng)顏色的亮度信息。
二、使用OpenCV提取RGB顏色通道
首先,確保你已經(jīng)安裝了OpenCV庫。你可以使用以下命令來安裝它:
pip install opencv-python
?接下來,我們來看看如何提取RGB顏色通道:
注意:在OpenCV中,圖像通道的順序是按BGR(藍(lán)綠紅)順序排列,而不是通常的RGB(紅綠藍(lán))順序。這是OpenCV的一個(gè)特殊之處,你需要牢記這一點(diǎn),以避免在處理圖像時(shí)出現(xiàn)顏色通道的混淆。
import cv2
# 1. 讀取圖像
a = cv2.imread(r'./timg98.jpg')
# 2. 提取顏色通道
a1 = a[:, :, 0] # 藍(lán)色通道(B通道)
a2 = a[:, :, 1] # 綠色通道(G通道)
a3 = a[:, :, 2] # 紅色通道(R通道)
# 或者使用 cv2.split() 來分離顏色通道
b, g, r = cv2.split(a)
# b 包含藍(lán)色通道
# g 包含綠色通道
# r 包含紅色通道
# 3. 顯示藍(lán)色通道的圖像
cv2.imshow('result', b)
# 4. 設(shè)置窗口顯示時(shí)間,單位為毫秒(這里設(shè)置為100秒,可以根據(jù)需要調(diào)整)
cv2.waitKey(100000)
# 5. 關(guān)閉所有窗口
cv2.destroyAllWindows()
運(yùn)行結(jié)果:
注意:我們這里是顯示藍(lán)色通道的圖像,但是所顯示的圖片確實(shí)灰色的,那是因?yàn)橹伙@示藍(lán)色通道時(shí),實(shí)際上是將藍(lán)色通道作為亮度值,而將綠色和紅色通道設(shè)置為默認(rèn)的最大值,也就是255。這會(huì)導(dǎo)致圖像呈現(xiàn)為灰色。
想要展示只包含藍(lán)色通道信息的彩色圖像,可以將圖像中的綠色通道和紅色通道設(shè)為0,即移除綠色和紅色,只保留藍(lán)色。
可以通過以下代碼實(shí)現(xiàn):
# 導(dǎo)入OpenCV庫
import cv2
# 從指定路徑加載一張圖片('./timg98.jpg'是圖片文件的路徑)
a = cv2.imread(r'./timg98.jpg')
# 復(fù)制原始圖像以避免更改原始圖像
a_new = a.copy()
# 將圖像中的綠色通道和紅色通道設(shè)為0,即移除綠色和紅色,只保留藍(lán)色
a_new[:,:,1] = 0 # 綠色通道設(shè)為0
a_new[:,:,2] = 0 # 紅色通道設(shè)為0
# 創(chuàng)建一個(gè)窗口來顯示修改后的圖像,并將其命名為'result'
cv2.imshow('result', a_new)
# 等待用戶按鍵觸發(fā),這里設(shè)置等待時(shí)間為100000毫秒(100秒)
# 如果用戶在這個(gè)時(shí)間內(nèi)按下任意鍵,程序?qū)⒗^續(xù)執(zhí)行
# 如果等待時(shí)間為0(cv2.waitKey(0)),則會(huì)一直等待用戶按鍵
cv2.waitKey(100000)
# 關(guān)閉所有打開的圖像窗口
cv2.destroyAllWindows()
運(yùn)行結(jié)果:
三、合并RGB顏色通道
成功提取RGB顏色通道后,我們又想把它們合并,就可以通過以下代碼實(shí)現(xiàn):
import cv2
# 1. 讀取圖像
a = cv2.imread(r'./timg98.jpg')
# 2. 提取顏色通道
a1 = a[:, :, 0] # 藍(lán)色通道(B通道)
a2 = a[:, :, 1] # 綠色通道(G通道)
a3 = a[:, :, 2] # 紅色通道(R通道)
# 或者使用 cv2.split() 來分離顏色通道
b, g, r = cv2.split(a)
# b 包含藍(lán)色通道
# g 包含綠色通道
# r 包含紅色通道
# 使用cv2.merge()函數(shù)將三個(gè)通道重新合并成一個(gè)圖像
img = cv2.merge((b, g, r))
#img = cv2.merge((a1,a2,a3)) 或者使用這行代碼
# 創(chuàng)建一個(gè)窗口來顯示合并后的圖像,并將其命名為'result'
cv2.imshow('result', img)
# 等待用戶按鍵觸發(fā),這里設(shè)置等待時(shí)間為100000毫秒(100秒)
# 如果用戶在這個(gè)時(shí)間內(nèi)按下任意鍵,程序?qū)⒗^續(xù)執(zhí)行
# 如果等待時(shí)間為0(cv2.waitKey(0)),則會(huì)一直等待用戶按鍵
cv2.waitKey(100000)
# 關(guān)閉所有打開的圖像窗口
cv2.destroyAllWindows()
運(yùn)行結(jié)果:文章來源:http://www.zghlxwxcb.cn/news/detail-736323.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-736323.html
到了這里,關(guān)于OpenCv對(duì)于圖片的RGB三色通道的提取與合并的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!