使用Python中OpenCV庫創建一幅圖片的RGB通道圖片

2020-12-03 python高手養成

我們知道,在使用PhotoShop進行圖片的摳取、創建和存儲選區、存儲圖像的色彩資料等複雜操作時,經常會用到一個功能,那就是「RGB」通道,它能從三原色角度對一幅圖片進行精準處理。我們在驚嘆PhotoShop中RGB通道功能強大的同時,是否想過它是如何實現的呢?今天,我們使用Python中OpenCV庫實現獲取一幅圖片的RGB三通道圖片的功能。我們以網上下載的一幅千與千尋的彩色圖片為例進行處理。

圖片來自網絡

【前期準備】

在開始案例之前,我們先要下載安裝第三方庫OpenCV和numpy。對於OpenCV的安裝方式,網上有很多,大家可以自行參照學習安裝,我們安裝的是比較新的版本4.0.0版本。該版本的OpenCV安裝成功後,可以在Python編譯器中import cv2測試下安裝是否成功。numpy這個庫相信大家都很熟悉,數據分析常用的第三方庫,對於處理數組有其自身的優勢,它的使用方法本篇也不贅述,後續有專門的學習經驗跟大家交流。我們使用的Python版本是3.4.3版。

【原理分析】

我們知道,在計算機中一幅圖片通過RGB三色展現(也可以是RGBA,後面的A表示alpha值,可以設置透明度),顯示的每一個像素點都可以使用(R,G,B)這樣的數據格式來描述這個像素點的顏色,其中,RGB的取值都是在0-255之間,RGB全部取值為0表示黑色,全部為255表示白色。

對於一幅圖片中每一個像素點,我們可以使用一個二維數組來表示其具體的行列值,然後我們在這個基礎上增加一個維度,用一個表示三原色取值的列表定義具體的RGB值,數據結構應該是這樣的(row, column)= [R, G, B],我們使用Python中的列表處理這樣一種數據結構是很複雜的。有沒有好的辦法呢?答案當然是肯定的,我們需要用到的神器numpy就該登場了。但是,貌似使用cv2打開的圖片就是numpy的ndarray這種類型。但是,必須要說明的是,我們使用cv2.imread()打開的圖片中RGB的順序應該是BGR,可以自行測試以下哦。

然後,如果我們想獲取圖片的RGB通道圖片,把相應的值變為0即可,然後保存圖片即可。我們看下這個例子。

使用cv2讀取圖片並檢查數據類型

如果我們想將圖片img中所有像素點的R值改為0該怎麼操作呢?很簡單我們使用img[:, :, 2] = 0(按照BGR的順序取值的)。

【程序源碼】

為了增加程序的複雜性,我們使用一個循環同時將同一幅圖片的RGB通道圖片分別進行輸出。程序原始碼如下圖所示。

程序原始碼

下面我們在PhotoShop中比較看下我們的輸出結果是否符合要求。

取消紅色通道後的圖片R.png在ps中顯示

上圖中取消紅色通道就是將圖片中所有像素點的R值置為0,同理,其它通道按照紅色通道進行處理即可。

【總 結】

OpenCV是一款很不錯的計算機視覺庫,最重要的是這款視覺庫是開源並且跨平臺的,輕量而高效是其主要特點,主要接口是C++,保證了運行速率,它實現了很多圖形圖像處理及計算機視覺方面的通用算法。本例子只是OpenCV的簡單應用。對於視頻它也可以很好的處理,並且它提供的接口很容易使用。我們在後續會進一步討論其對於視頻處理的一些簡單運用,並且對於它的一些常用算法也進行初步研究,歡迎大家留言討論。

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

相關焦點

  • 「python opencv視覺零到實戰」八、圖片選區操作
    一、學習目標了解什麼是ROI了解floodFill的使用方法如有錯誤歡迎指出~目錄「python opencv 計算機視覺零基礎實戰」 第一節「python opencv視覺入門到實戰」二、格式與攝像頭「python opencv 視覺入門到實戰」 三、圖像編輯「python opencv視覺入門到實戰
  • 使用Python OpenCV處理圖像之如何拆分及合併一幅圖像的RGB通道
    我們知道,使用OpenCV在獲取一幅BGR圖像的信息時(shape屬性),會同時獲得一幅圖像的RGB圖層數。那麼,問題來了,如何將這些圖像拆分和合併呢?本篇文章作為另一篇博文使用Python中OpenCV庫創建一幅圖片的RGB通道圖片的補充。這篇博文中我們使用了數組切片及索引實現了分離BGR通道的功能。
  • 「python opencv視覺零基礎」十、圖片效果毛玻璃
    一、學習目標了解高斯模糊的使用方法了解毛玻璃的圖片效果添加了解如何自己做一個噪聲圖片目錄「python opencv 計算機視覺零基礎實戰」 第一節「python opencv視覺入門到實戰」二、格式與攝像頭「python opencv 視覺入門到實戰」 三、圖像編輯「python opencv視覺入門到實戰
  • 如何快速簡單的安裝opencv-python
    >pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-contrib-python這樣就會從清華鏡像安裝opencv-contrib-python庫。
  • 「python opencv視覺零基礎」十四、直方圖反向投影
    前文提醒:博主正在參加博客之星評比,成功入選Top200,現在暫居第九歡迎各位點擊了解更多幫我投票,非常感謝~目錄「python opencv 計算機視覺零基礎實戰」 第一節「python opencv視覺入門到實戰」二、格式與攝像頭「python opencv 視覺入門到實戰」 三、圖像編輯「python
  • opencv-python獲取圖像:面向對象與面向過程
    這裡需要注意以下,opencv讀取圖片默認通道為BGR的格式,當在其他UI用戶界面顯示圖像時注意轉換一下通道順序,例如BGR轉換成RGB:Image1=cv2.cvtColor(image, cv2.COLOR_BGR2RGB)下面讀取一張圖片並顯示
  • 「python opencv計算機視覺零基礎到實戰」九模糊
    一、學習目標了解什麼是卷積了解模糊的使用方法與應用目錄「python opencv 計算機視覺零基礎實戰」 第一節「python opencv視覺入門到實戰」二、格式與攝像頭「python opencv 視覺入門到實戰」 三、圖像編輯「python opencv視覺入門到實戰」 第四節色彩空間
  • 以別墅圖片為例 結合numpy和OpenCV庫 探尋Python中數組組合方式
    前幾篇博文我們介紹了numpy的基礎知識numpy庫學習總結(基礎知識)和numpy中array數組的維度變化Python數據分析必備基本功 numpy數組維度變換的常用方法匯總。今天,我們來梳理一下numpy中數組array的組合操作。
  • 用Python做特效,分分鐘碾壓五毛黨
    (2)批量摳圖批量摳圖需要用到paddlehub中的模型庫,代碼很簡單,這裡就不多說了:def getHumanseg(frames):""" 對幀圖片進行批量摳圖 :param frames
  • 使用OpenCV和Python構建自己的車輛檢測模型
    utm_source=blog&utm_medium=vehicle-detection-opencv-python)目錄視頻中運動目標檢測的思想視頻中目標檢測的真實世界用例視頻目標檢測的基本概念 幀差分 圖像閾值 檢測輪廓 圖像膨脹利用OpenCV構建車輛檢測系統視頻中運動目標檢測的思想目標檢測是計算機視覺中一個引人入勝的領域。
  • 「python opencv視覺零基礎實戰」七邏輯運算應用
    一、學習目標了解opencv中圖像的邏輯運算了解opencv中邏輯運算的應用如有錯誤歡迎指出~目錄「python opencv 計算機視覺零基礎實戰」 第一節「python opencv視覺入門到實戰」二、格式與攝像頭「python opencv 視覺入門到實戰」 三、圖像編輯「python
  • 基於TensorFlow 、OpenCV 和 Docker 的實時視頻目標檢測
    我使用 OpenCV 和 python3 的多任務處理庫 multiprocessing、多線程庫 multi-threading。我會重點描述我在搭建過程中遇到的問題,以及我的解決方案 (有些還未解決)。
  • Python第三方庫安裝
    pypi.org其中PyPI: Python Package Index是由PSF維護的展示全球Python計算生態的主站如要安裝圖像處理opencv-python庫可以搜索 opencv,但結果如下:
  • 真沒想到,Python還能實現5毛特效
    模塊安裝我們需要使用到的模塊主要有如下幾個:pillowopencvmoviepypaddlehub我們都可以直接用pip安裝:pip install pillowpip install opencv-pythonpip install moviepy其中OpenCV有一些適配問題,建議選取3.0以上版本。
  • Python中如何利用Opencv打開視頻或圖像並用PyQt控制項顯示
    OpenCV是一個基於BSD許可(開源)發行的跨平臺計算機視覺庫,可以運行在Linux、Windows、Android和Mac OS作業系統上,使用起來十分方便,把它與PyQt結合起來,就可以順利的操作視頻、圖像了。具體安裝請自行百度,這裡介紹使用方法。
  • OpenCV中的快速直線檢測
    該函數是LineSegmentDetector因版權問題從OpenCV中移除後最易用的直線檢測小能手,沒有之一。本文介紹該功能的使用方法其輸出結果剖析。在python的opencv相關的安裝包中,opencv-python 包含主要模塊,opencv-contrib-python 包含主要模塊以及一些擴展模塊。但這兩個模塊並不兼容,如果已經安裝過opencv-python,需要先卸載,再安裝opencv-contrib-python。
  • 基於python+OpenCV模塊的人臉識別定位技術
    什麼是OpenCV模塊OpenCV是一款跨平臺的視覺庫,可以支持的作業系統有Linux、Windows和Mac OS作業系統,並且還提供了多種語言的接口,比如Python,java,MATLAB等常用語言。
  • 如何 提取圖片中的文字?這款Python 庫 4行代碼搞定!
    先將圖像中的特徵的提取並檢測目標區域,之後對目標區域的的字符進行分割和分類。關於EasyOCRPython中有一個不錯的OCR庫-EasyOCR,在GitHub已有9700star。它可以在python中調用,用來識別圖像中的文字,並輸出為文本。
  • 使用Python調整圖像大小
    用於操作圖像的Python庫。你可以在自己的項目中使用本文的代碼。我們要構建的命令行程序可以一次調整一個或多個圖像文件的大小。創建圖像在這個例子中,我們將創建我們自己的圖像,而不是找到一個真正的圖像來操縱。為什麼?
  • 基於opencv 的圖像處理入門教程
    前言雖然計算機視覺領域目前基本是以深度學習算法為主,但實際上很多時候對圖片的很多處理方法,並不需要採用深度學習的網絡模型,採用目前成熟的圖像處理庫即可實現,比如 OpenCV 和 PIL ,對圖片進行簡單的調整大小、裁剪、旋轉,或者是對圖片的模糊操作。