使用Python OpenCV處理圖像之如何拆分及合併一幅圖像的RGB通道

2020-12-03 python高手養成

我們知道,使用OpenCV在獲取一幅BGR圖像的信息時(shape屬性),會同時獲得一幅圖像的RGB圖層數。那麼,問題來了,如何將這些圖像拆分和合併呢?本篇文章作為另一篇博文使用Python中OpenCV庫創建一幅圖片的RGB通道圖片的補充。這篇博文中我們使用了數組切片及索引實現了分離BGR通道的功能。

兩種圖層拆分方法

今天,我們使用OpenCV提供的一組函數來實現相同的功能,並對比兩種方案的優劣。

一般方法

對於圖像BGR通道的獲取,我們使用索引的方法是這樣的:

利用數組切片方式實現圖層拆分

import cv2

img = cv2.imread('test.jpg')

b_img = img[:, :, 0] # B通道

g_img = img[:, :, 1] # G通道

r_img = img[:, :, 2] # R通道

這樣選取的是整個圖片的各個通道的顏色數值。拆分的時候我們直接保存相應的圖像即可。

還有沒有別的辦法呢?

別忘了內置方法哦

答案是肯定的,我們看下OpenCV為我們封裝的方法吧。

cv2.split(img)

實現功能:傳入一個圖像數組,並將圖像拆分為BGR三個通道的圖像,返回值是BGR三個通道圖像的元組

cv2.merge((b,g,r))

實現功能:分別傳入BGR三個通道的圖像組成的元組,將其三個圖像合併為一個BGR三通道圖像

我們使用代碼來驗證下這兩個函數實現的效果吧!

import cv2

img = cv2.imread('test.jpg')

b, g, r = cv2.split(img)

# 拆分後顯示cv2.imshow('b', b)cv2.imshow('g', g)cv2.imshow('r', r)

# 合併

img2 = cv2.merge(b, g, r)

cv2.imshow('Merge', img2)

# 響應事件while True:key = cv2.waitKey(0)

# esc退出if key == 27: break

# 關閉全部窗口

cv2.destroyAllWindows()

上述代碼可以準確地提取圖片的BGR通道值,並進行合併。

兩種方法哪個更好?

現在我們定義兩個函數,分別測試下函數耗時,比較兩個方案的優劣,具體代碼如下所示。

測試兩種方案耗時

我們來看下測試結果,如下圖所示。

耗時測試結果

因此,我們在使用OpenCV進行圖層拆分時,除非必須使用,否則,首選拆分圖層還是要使用數組切片拆分的方法。

好了,今天就到這裡了,今天帶大家了解了一下對於圖層拆分的兩種可選方案,並且分析了兩種方案的性能優劣。建議在使用OpenCV進行圖像的圖層拆分時,首選數組切片拆分的方案。

歡迎大家留言討論,加關注後續內容會更精彩哦。

轉載請註明出處,百家號:Python高手養成。

相關焦點

  • 使用Python OpenCV處理圖像之使用OpenCV獲取並修改圖像的像素值
    使用Python OpenCV處理圖像之圖像文件的打開、顯示和保存操作,我們還使用OpenCV更改了微信頭像使用Python OpenCV處理圖像之詳解使用OpenCV處理鍵盤滑鼠事件。獲取圖像的屬性信息一幅圖像如何表示具體像素值?
  • 【數字圖像處理系列五】圖像濾波之空間濾波:圖像平滑降噪和圖像銳化
    python版本:python3.5.4 ; opencv-python版本:opencv-python3.4.2.17
  • opencv-python獲取圖像:面向對象與面向過程
    這裡需要注意以下,opencv讀取圖片默認通道為BGR的格式,當在其他UI用戶界面顯示圖像時注意轉換一下通道順序,例如BGR轉換成RGB:Image1=cv2.cvtColor(image, cv2.COLOR_BGR2RGB)下面讀取一張圖片並顯示
  • opencv-python圖像預處理-濾波
    為了消除外界環境對圖像採集的幹擾,增強圖像的邊緣及灰度跳變的部分,使圖像變得清晰以及提高圖像處理速度需要對圖像進行預處理操作,主要是對圖像進行濾波和增強操作。使用的方法可以分為空間域處理和頻率域處理兩類。空間域指圖像平面本身,這類圖像處理方法用各種模板直接與圖像進行卷積運算,實現對圖像的處理。
  • 使用Python OpenCV處理圖像之圖像感興趣的區域(ROI)獲取
    上幾篇的內容我們學習了Python使用OpenCV處理圖像滑鼠及鍵盤事件的基礎方法使用Python OpenCV處理圖像之詳解使用OpenCV處理鍵盤滑鼠事件及圖像像素點內容的獲取和設置使用Python OpenCV處理圖像之使用OpenCV獲取並修改圖像的像素值。
  • 使用Python中OpenCV庫創建一幅圖片的RGB通道圖片
    我們知道,在使用PhotoShop進行圖片的摳取、創建和存儲選區、存儲圖像的色彩資料等複雜操作時,經常會用到一個功能,那就是「RGB」通道,它能從三原色角度對一幅圖片進行精準處理。我們在驚嘆PhotoShop中RGB通道功能強大的同時,是否想過它是如何實現的呢?
  • 基於opencv 的圖像處理入門教程
    前言雖然計算機視覺領域目前基本是以深度學習算法為主,但實際上很多時候對圖片的很多處理方法,並不需要採用深度學習的網絡模型,採用目前成熟的圖像處理庫即可實現,比如 OpenCV 和 PIL ,對圖片進行簡單的調整大小、裁剪、旋轉,或者是對圖片的模糊操作。
  • 教程:使用Python進行基本圖像數據分析!
    [來自IT168]  【IT168 評論】本教程將介紹如何導入圖像並觀察其屬性、拆分圖層以及查看灰度。在正式開始之前,我們先來了解一些關於像素的基礎知識。  計算機將圖片以像素形式存儲,這就像馬賽克一樣。如果像素太大,很難製作光滑的邊緣和曲線。相反,我們使用的像素越多越小,看起來就會越平滑,或者說像素化程度越小,圖像就會越好看,有時,這也被稱為圖像解析度。
  • 「python opencv視覺零基礎」十四、直方圖反向投影
    前文提醒:博主正在參加博客之星評比,成功入選Top200,現在暫居第九歡迎各位點擊了解更多幫我投票,非常感謝~目錄「python opencv 計算機視覺零基礎實戰」 第一節「python opencv視覺入門到實戰」二、格式與攝像頭「python opencv 視覺入門到實戰」 三、圖像編輯「python
  • 使用Python調整圖像大小
    可以說,每一個「使用計算機的人」都需要在某個時間點調整圖像的大小。MacOS的預覽版可以做到,WindowsPowerToys也可以。本文使用Python來調整圖像大小,幸運的是,圖像處理和命令行工具是Python的兩個特長。
  • Python中如何利用Opencv打開視頻或圖像並用PyQt控制項顯示
    OpenCV是一個基於BSD許可(開源)發行的跨平臺計算機視覺庫,可以運行在Linux、Windows、Android和Mac OS作業系統上,使用起來十分方便,把它與PyQt結合起來,就可以順利的操作視頻、圖像了。具體安裝請自行百度,這裡介紹使用方法。
  • 使用OpenCV和Python構建自己的車輛檢測模型
    utm_source=blog&utm_medium=vehicle-detection-opencv-python)目錄視頻中運動目標檢測的思想視頻中目標檢測的真實世界用例視頻目標檢測的基本概念 幀差分 圖像閾值 檢測輪廓 圖像膨脹利用OpenCV構建車輛檢測系統視頻中運動目標檢測的思想目標檢測是計算機視覺中一個引人入勝的領域。
  • 圖像處理之RGB轉Ycbcr or gray
    YCbCr或Y'CbCr有的時候會被寫作:YCBCR或是Y'CBCR,是色彩空間的一種,通常會用於影片中的影像連續處理,或是數字攝影系統中。
  • 「python opencv視覺零基礎」十、圖片效果毛玻璃
    一、學習目標了解高斯模糊的使用方法了解毛玻璃的圖片效果添加了解如何自己做一個噪聲圖片目錄「python opencv 計算機視覺零基礎實戰」 第一節「python opencv視覺入門到實戰」二、格式與攝像頭「python opencv 視覺入門到實戰」 三、圖像編輯「python opencv視覺入門到實戰
  • 「python opencv視覺零到實戰」八、圖片選區操作
    一、學習目標了解什麼是ROI了解floodFill的使用方法如有錯誤歡迎指出~目錄「python opencv 計算機視覺零基礎實戰」 第一節「python opencv視覺入門到實戰」二、格式與攝像頭「python opencv 視覺入門到實戰」 三、圖像編輯「python opencv視覺入門到實戰
  • 使用Python OpenCV處理圖像之詳解直線、圓、矩形及文字的繪製
    我們知道,OpenCV作為一款強大的圖像處理庫,它能對圖像進行一些類似PS上面的處理,如果你足夠精通它,你可能會發掘比PS處理圖像更加豐富的功能……但是,作為Python新手,你不可能跳過一些基礎內容的學習過程。
  • 深入理解OpenCV+Python直方圖均衡化
    直方圖均衡化是圖像處理領域中利用圖像直方圖對對比度進行調整的方法。
  • 「python opencv計算機視覺零基礎到實戰」九模糊
    一、學習目標了解什麼是卷積了解模糊的使用方法與應用目錄「python opencv 計算機視覺零基礎實戰」 第一節「python opencv視覺入門到實戰」二、格式與攝像頭「python opencv 視覺入門到實戰」 三、圖像編輯「python opencv視覺入門到實戰」 第四節色彩空間
  • 使用一行Python代碼從圖像讀取文本
    處理圖像不是一項簡單的任務。對你來說,作為一個人,很容易看著某樣東西然後馬上知道你在看什麼。但電腦不是這樣工作的。對你來說太難的任務,比如複雜的算術,或者一般意義上的數學,是計算機毫不費力就能完成的。但在這裡,情況正好相反——對你來說很瑣碎的任務,比如識別圖像中的貓或狗,對電腦來說真的很難。
  • ImagePy——UI界面支持開放插件的Python開源圖像處理框架
    python 開源圖像處理框架,其 UI 界面支持開放插件。在 github:https://github.com/Image-Py/imagepy 上,不僅有關於這款圖像處理軟體的詳細介紹,還有一些使用示例,雷鋒網 AI 科技評論接下來將詳細介紹這一開源圖像處理框架。