久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術(shù)文章
文章詳情頁

opencv-python的RGB與BGR互轉(zhuǎn)方式

瀏覽:153日期:2022-07-23 14:02:26

一、格式轉(zhuǎn)換

opencv讀取圖片的默認(rèn)像素排列是BGR,需要轉(zhuǎn)換。PIL庫是RGB格式。

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

在Python中,將RGB順序的圖像轉(zhuǎn)成BGR順序,需要調(diào)整channel dimension的各顏色通道順序。

方法1:

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

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

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

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

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

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

方法2:

使用opencv自帶函數(shù)轉(zhuǎn)換圖像的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轉(zhuǎn)RGB

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

RGB轉(zhuǎn)BGR

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

RGB轉(zhuǎn)GBR

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

二、其他

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

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

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

NHWC ?> NCHW:

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

NCHW ?> NHWC:

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

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

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

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

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

References

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

以上這篇opencv-python的RGB與BGR互轉(zhuǎn)方式就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 成人免费在线电影 | 亚洲精品电影网在线观看 | 亚洲国产婷婷香蕉久久久久久99 | 久久青草国产 | 2018天天操| 爱草在线| 91亚洲国产成人久久精品网站 | 青青操天天干 | 黄色大片在线播放 | 久久一| 国产精品久久久久国产a级 国产精品欧美一区二区三区不卡 | 精品久久一二三区 | 日韩一区在线视频 | 伊人二区 | 久久精品久久久久电影 | 亚洲精品1区2区 | 欧美一区二区激情三区 | 欧洲美女7788成人免费视频 | 天天网 | 亚洲免费网 | 欧美成人高清视频 | 国产一区二区自拍 | 国产成人高清 | 久久男人天堂 | 欧美一级毛片久久99精品蜜桃 | 亚洲国产视频一区 | 欧美日韩国产一区二区 | 欧美日韩精品综合 | 亚洲免费成人 | 91佛爷在线观看 | 天天精品视频免费观看 | 国产午夜精品一区二区三区 | 亚洲免费在线观看视频 | 欧美日韩亚洲一区 | 亚洲欧美日韩在线一区二区三区 | 曰韩毛片| 91夜夜蜜桃臀一区二区三区 | 蜜桃comaaa | 2012中文版免费观看 | 性视频亚洲| 免费毛片网|