欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

opencv-python的RGB與BGR互轉方式

 更新時間:2020年06月02日 10:42:56   作者:慶志的小徒弟  
這篇文章主要介紹了opencv-python的RGB與BGR互轉方式,具有很好的參考價值,希望對大家有所 幫助。一起跟隨小編過來看看吧

一、格式轉換

opencv讀取圖片的默認像素排列是BGR,需要轉換。PIL庫是RGB格式。

caffe底層的圖像處理是基于opencv,其使用的顏色通道順序與也是BGR(Blue-Green-Red),而日常圖片存儲時顏色通道順序是RGB。

在Python中,將RGB順序的圖像轉成BGR順序,需要調整channel dimension的各顏色通道順序。

方法1:

img = cv2.imread("001.jpg")

img_ = img[:,:,::-1].transpose((2,0,1))

① 在opencv里,圖格式HWC,其余都是CHW,故transpose((2,0,1))

② img[:,:,::-1]對應H、W、C,彩圖是3通道,即C是3層。opencv里對應BGR,故通過C通道的 ::-1 就是把BGR轉為RGB

注: [::-1] 代表順序相反操作

③ 若不涉及C通道的BGR轉RGB,如Img[:,:,0]代表B通道,也就是藍色分量圖像;Img[:,:,1]代表G通道,也就是綠色分量圖像;Img[:,:,2]代表R通道,也就是紅色分量圖像。

方法2:

使用opencv自帶函數(shù)轉換圖像的R通道和B通道。

RGB -> BGR

img_bgr = cv2.cvtColor(img_rgb, cv2.COLOR_RGB2BGR)

BGR->RGB

img_rgb = cv2.cvtColor(img_bgr, cv2.COLOR_BGR2RGB)

方法3:

BRG轉RGB

rgb = bgr[...,::-1]

RGB轉BGR

bgr = rgb[...,::-1]

RGB轉GBR

gbr = rgb[...,[2,0,1]]

二、其他

添加Batch項一般是caffe2圖像預處理的最后一步,在經(jīng)過RGB->BGR,圖像增強以及HWC->CHW后,還需要在CHW前添加一個第四維N以記錄圖像樣本數(shù)量(即batchsize),所以輸入caffe的圖像格式為(N,C,H,W),其中顏色通道C的順序是BGR。

但是對于TensorFlow這個順序有差別。TensorFlow有兩種數(shù)據(jù)格式NHWC和NCHW,默認的數(shù)據(jù)格式是NHWC,可以通過參數(shù)data_format指定數(shù)據(jù)格式。設置為 “NHWC” 時,排列順序為 [batch, height, width, channels];設置為 “NCHW” 時,排列順序為 [batch, channels, height, width]。

兩種數(shù)據(jù)格式的轉換:

NHWC –> NCHW:

import tensorflow as tf
x = tf.reshape(tf.range(24), [1, 3, 4, 2])
out = tf.transpose(x, [0, 3, 1, 2])

NCHW –> NHWC:

import tensorflow as tf
x = tf.reshape(tf.range(24), [1, 2, 3, 4])
out = tf.transpose(x, [0, 2, 3, 1])

補充知識:淺談opencv使用BGR而非RGB的原因

使用opencv讀取圖片時, 默認的通道順序是BGR而非RGB,在RGB為主流的當下, 這種默認給我們帶來了一點不便。那么, opencv 為什么要使用BGR而非RGB呢?

目前看到的一種解釋說是因為歷史原因:早期BGR也比較流行,opencv一開始選擇了BGR,到后來即使RGB成為主流,但也不好改了。

(這個觀點未經(jīng)考證,也沒有嚴肅考證的動力, 在“碰到”新的不同解釋前, 估且就這么認為吧)

References

https://stackoverflow.com/questions/14556545/why-opencv-using-bgr-colour-space-instead-of-rgb

以上這篇opencv-python的RGB與BGR互轉方式就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • PyTorch安裝與基本使用詳解

    PyTorch安裝與基本使用詳解

    這篇文章主要介紹了PyTorch安裝與基本使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08
  • Python優(yōu)化算法之遺傳算法案例代碼

    Python優(yōu)化算法之遺傳算法案例代碼

    優(yōu)化算法,尤其是啟發(fā)式的仿生智能算法在最近很火,它適用于解決管理學,運籌學,統(tǒng)計學里面的一些優(yōu)化問題,這篇文章主要介紹了Python優(yōu)化算法—遺傳算法,需要的朋友可以參考下
    2023-02-02
  • Python實現(xiàn)的登錄驗證系統(tǒng)完整案例【基于搭建的MVC框架】

    Python實現(xiàn)的登錄驗證系統(tǒng)完整案例【基于搭建的MVC框架】

    這篇文章主要介紹了Python實現(xiàn)的登錄驗證系統(tǒng),結合完整實例形式分析了Python基于搭建的MVC框架進行登錄驗證操作的相關實現(xiàn)與使用技巧,需要的朋友可以參考下
    2019-04-04
  • 提升Python運行速度的5個小技巧

    提升Python運行速度的5個小技巧

    這篇文章主要為大家介紹了Python提升運行速度的幾個小技巧,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • matplotlib實現(xiàn)區(qū)域顏色填充

    matplotlib實現(xiàn)區(qū)域顏色填充

    這篇文章主要為大家詳細介紹了matplotlib實現(xiàn)區(qū)域顏色填充,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • python將一組數(shù)分成每3個一組的實例

    python將一組數(shù)分成每3個一組的實例

    今天小編就為大家分享一篇python將一組數(shù)分成每3個一組的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • Python 啟動時選擇32位 或64位版的操作

    Python 啟動時選擇32位 或64位版的操作

    這篇文章主要介紹了Python 啟動時選擇32位 或64位版的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • 講清楚fit_transform()和transform()的區(qū)別及說明

    講清楚fit_transform()和transform()的區(qū)別及說明

    這篇文章主要介紹了講清楚fit_transform()和transform()的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • django 自定義用戶user模型的三種方法

    django 自定義用戶user模型的三種方法

    這篇文章主要介紹了django 自定義用戶user模型的三種方法,需要的朋友可以參考下
    2014-11-11
  • pandas對齊運算的實現(xiàn)示例

    pandas對齊運算的實現(xiàn)示例

    本文主要介紹了pandas對齊運算的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10

最新評論