日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

OpenCV最经典的3种颜色空间(cv2.cvtColor)及互相转换

發(fā)布時(shí)間:2023/11/27 生活经验 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenCV最经典的3种颜色空间(cv2.cvtColor)及互相转换 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

OpenCV最經(jīng)典的3種顏色空間(cv2.cvtColor)及互相轉(zhuǎn)換

    • 1. 效果圖
    • 2. 原理
      • 2.1 照明條件的重要性
      • 2.2 OpenCV 中的3種顏色空間/模型
      • 2.3 顏色空間的主要用途
    • 3. 源碼
    • 參考

OpenCV中有超過150種顏色空間,這篇博客將介紹OpenCV中最經(jīng)典的3種顏色空間(RGB、HSV、 L* a* b*)及其轉(zhuǎn)換,并討論光照條件、色彩空間在計(jì)算機(jī)視覺應(yīng)用中的關(guān)鍵作用。

關(guān)鍵要點(diǎn)是在編寫代碼前始終考慮照明條件!一般來說,控制照明條件比編寫代碼來補(bǔ)償在低質(zhì)量下捕獲的圖像更容易。

  • RGB顏色空間是計(jì)算機(jī)視覺中最常見的顏色空間,簡單但并不直觀,因?yàn)楹茈y肉眼準(zhǔn)確確定某種顏色由多少紅色、綠色和藍(lán)色組成。呈現(xiàn)為立方體。
  • HSV 顏色空間很直觀,它允許沿著圓柱體而不是 RGB 立方體定義顏色。 HSV 顏色空間還為亮度/白度提供了單獨(dú)的維度,從而更容易定義顏色深淺。
  • RGB 和 HSV 都無法模仿人類感知顏色的方式,而 L* a* b* 色彩空間可以感知差異,并從歐幾里得距離判斷倆種顏色的相似性。

HSV和Lab*顏色空間數(shù)值都重新縮放了以適合紙質(zhì)印刷的動態(tài)范圍。

1. 效果圖

RGB原圖 VS 各通道效果圖如下:

HSV原圖 VS 各通道效果圖如下:

Value 圖本質(zhì)上是一個(gè)灰度圖像——這是因?yàn)樵撝悼刂浦伾膶?shí)際亮度,而 Hue 和 Saturation 定義了實(shí)際的顏色和陰影。


L * a * b * VS 各通道效果圖如下:

與HSV示例類似,L通道專門用于顯示給定像素的亮度。 a通道和b通道確定了像素的陰影和顏色。

2. 原理

2.1 照明條件的重要性

照明可能意味著計(jì)算機(jī)視覺算法成功與失敗之間的區(qū)別。事實(shí)上,光照甚至可能是最重要的因素。

在編寫代碼之前,盡可能地獲得理想的照明條件。控制照明條件比編寫代碼來補(bǔ)償較低的照明條件更容易。

處理光照條件時(shí)應(yīng)尋求實(shí)現(xiàn)的三個(gè)目標(biāo):

  • 高對比度(應(yīng)該尋求最大化圖像中感興趣區(qū)域之間的對比度(即想要檢測、提取、描述、分類、操作等的“對象”與圖像的其余部分具有足夠高的對比度,盡量確保環(huán)境的背景和前景之間有高對比度);

  • 可推廣的(照明條件應(yīng)該足夠一致,以便擴(kuò)展);

  • 穩(wěn)定的(具有穩(wěn)定、一致、可重復(fù)的光照條件是計(jì)算機(jī)視覺應(yīng)用開發(fā)的圣杯。)

2.2 OpenCV 中的3種顏色空間/模型

顏色模型是在顏色空間中用數(shù)字表示顏色的一種抽象方法。

  • RGB

RGB 代表圖像中的紅、綠、藍(lán)分量,通常被視為立方體。

  • RGB顏色空間是加法顏色空間的一個(gè)示例:添加的顏色越多,像素越亮,越接近白色;
  • [0,255]共256個(gè)值; 紅色+綠色=黃色。紅色+藍(lán)色=粉紅色。紅+綠+藍(lán)=白色。
    R=252, G=198, B=188 = 白色人種膚色。
    R=22,G=159,B=230=藍(lán)色徽標(biāo)。
  • HSV

HSV 顏色空間將其重塑為圓柱體而不是立方體,亮度是一個(gè)單獨(dú)的維度

  • Hue:色調(diào),正在檢查哪種“純”顏色。例如“紅色”顏色的所有陰影和色調(diào)都將具有相同的色調(diào)。 [0, 179]
  • Saturation:飽和度,顏色有多“白”。完全飽和的顏色將是“純色”,如“純紅色”。零飽和度的顏色將是純白色。 [0, 255]
  • Value:值允許控制顏色的亮度。值為零表示純黑色,而增加值會產(chǎn)生較淺的顏色。 [0, 255]
  • Lab

在RGB 和 HSV 顏色空間中,歐幾里得距離無法“測量”各種顏色之間顏色的感知差異。 而Lab 顏色空間可以模仿人類觀察和解釋顏色的方法。 Lab 是一個(gè)3軸系統(tǒng),它使得兩種任意顏色之間的歐幾里德距離具有實(shí)際的感知意義。**

  • L-通道:像素的“亮度”。該值在垂直軸上上下變化,從白色到黑色,在軸的中心為中性灰色。
  • a-通道:源自 L 通道的中心,在光譜的一端定義純綠色,在另一端定義純紅色。
  • b 通道:源自 L 通道的中心,但垂直于 a 通道??。 b 通道在光譜中一端定義純藍(lán)色,另一端定義純黃色。 同樣,雖然 Lab* 顏色空間不如 HSV 和 RGB 顏色空間直觀且不易理解,但它在計(jì)算機(jī)視覺中得到了大量使用。
    這是由于顏色之間的距離具有實(shí)際的感知意義,使我們能夠克服各種光照條件問題。它還用作強(qiáng)大的彩色圖像描述符。

2.3 顏色空間的主要用途

  • RGB:足夠簡單,主要用于在顯示器上顯示顏色;

  • HSV:當(dāng)有興趣根據(jù)顏色跟蹤圖像中的對象時(shí),使用 HSV 定義顏色范圍非常容易。

  • Lab:提供了感知均勻性,可以模仿人類觀察和解釋顏色的方法,使得兩種任意顏色之間的距離具有實(shí)際意義。 當(dāng)關(guān)心跨多個(gè)設(shè)備的色彩管理、色彩傳輸或色彩一致性時(shí),L * a * b色彩空間可以提供出色的彩色圖像描述符。

  • 灰度:不是顏色空間,但在顏色無關(guān)緊要的應(yīng)用中,例如在檢測人臉或構(gòu)建對象分類器時(shí),忽略顏色使用圖像的灰度表示——這能夠節(jié)省內(nèi)存并提高計(jì)算效率。

3. 源碼

可以看到Opencv中共有274種顏色空間;

# 加載圖像,并演示如何使用RGB、HSV和L*a*b*顏色空間。
# USAGE
# python color_spaces.py# 導(dǎo)入必要的包
import argparse
import cv2
import imutils# 遍歷查看所有顏色空間值
flags = [i for i in dir(cv2) if i.startswith('COLOR_')]
print(flags)
print(len(flags))# 構(gòu)建命令行參水及解析
# --image 輸入圖像路徑
ap = argparse.ArgumentParser()
ap.add_argument("-i", "--image", type=str, default="ml3.jpg",help="path to input image")
args = vars(ap.parse_args())# 加載圖像并展示
image = cv2.imread(args["image"])
image = imutils.resize(image, width=200)
cv2.imshow("RGB", image)# 遍歷每一個(gè)單獨(dú)的通道并展示
# RGB 是最常用的色彩空間,但它并不是最直觀的色彩空間。
# 顏色的“白色”或“亮度”是每個(gè)紅色、綠色和藍(lán)色分量的加法組合。
for (name, chan) in zip(("B", "G", "R"), cv2.split(image)):cv2.imshow(name, chan)# 等待按鍵,關(guān)閉所有窗口
cv2.waitKey(0)
cv2.destroyAllWindows()# HSV 顏色空間轉(zhuǎn)換 RGB 顏色空間,將其重塑為圓柱體而不是立方體,亮度是一個(gè)單獨(dú)的維度
# - Hue:色調(diào),正在檢查哪種“純”顏色。例如“紅色”顏色的所有陰影和色調(diào)都將具有相同的色調(diào)。 [0, 179]
# - Saturation:飽和度,顏色有多“白”。完全飽和的顏色將是“純色”,如“純紅色”。零飽和度的顏色將是純白色。 [0, 255]
# - Value:值允許控制顏色的亮度。值為零表示純黑色,而增加值會產(chǎn)生較淺的顏色。 [0, 255]
# 轉(zhuǎn)換圖像為HSV顏色空間并展示
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
cv2.imshow("HSV", hsv)# 遍歷每一個(gè)單獨(dú)的H、S、V通道并展示
for (name, chan) in zip(("H", "S", "V"), cv2.split(hsv)):cv2.imshow(name, chan)# 按鍵關(guān)閉所有窗口
cv2.waitKey(0)
cv2.destroyAllWindows()# L * a * b顏色空間
# 計(jì)算紅色和綠色之間的歐幾里德距離;紅色和紫色;以及 RGB 顏色空間中的紅色和海軍藍(lán):
import mathred_green = math.sqrt(((255 - 0) ** 2) + ((0 - 255) ** 2) + ((0 - 0) ** 2))
red_purple = math.sqrt(((255 - 128) ** 2) + ((0 - 0) ** 2) + ((0 - 128) ** 2))
red_navy = math.sqrt(((255 - 0) ** 2) + ((0 - 0) ** 2) + ((0 - 128) ** 2))
print(red_green, red_purple, red_navy)# 在RGB、HSV顏色空間計(jì)算歐幾里得距離,并不能得出紅色在某種意義上更類似于紫色而不是綠色?,
# 歐幾里得距離無法“測量”各種顏色之間顏色的感知差異在 RGB 和 HSV 顏色空間中。
# 這就是 L*a*b* 顏色空間的用武之地——它的目標(biāo)是模仿人類觀察和解釋顏色的方法。
# L*a*b* 顏色空間中兩種任意顏色之間的歐幾里德距離具有實(shí)際的感知意義。
# 感知意義的加入使得 L*a*b* 顏色空間不如 RGB 和 HSV 那樣直觀和理解,但它在計(jì)算機(jī)視覺中被大量使用。本質(zhì)上,L*a*b* 顏色空間是一個(gè) 3 軸系統(tǒng):# - L-通道:像素的“亮度”。該值在垂直軸上上下變化,從白色到黑色,在軸的中心為中性灰色。
# - a-通道:源自 L 通道的中心,在光譜的一端定義純綠色,在另一端定義純紅色。
# - b 通道:也源自 L 通道的中心,但垂直于 a 通道??。 b 通道在光譜中一端定義純藍(lán)色,另一端定義純黃色。
# 同樣,雖然 L*a*b* 顏色空間不如 HSV 和 RGB 顏色空間直觀且不易理解,但它在計(jì)算機(jī)視覺中得到了大量使用。
# 這是由于顏色之間的距離具有實(shí)際的感知意義,使我們能夠克服各種光照條件問題。它還用作強(qiáng)大的彩色圖像描述符。
# 轉(zhuǎn)換圖像為L*a*b空間并展示
lab = cv2.cvtColor(image, cv2.COLOR_BGR2LAB)
cv2.imshow("L*a*b*", lab)
# 遍歷每個(gè)通道并展示
for (name, chan) in zip(("L*", "a*", "b*"), cv2.split(lab)):cv2.imshow(name, chan)# 等待按鍵,關(guān)閉所有窗口
cv2.waitKey(0)
cv2.destroyAllWindows()# 展示灰度圖,灰度圖并不是一種顏色空間
# 鑒于眼睛對色彩的敏感程度,眼睛的受體和錐體不同,因此比藍(lán)色更能感知綠色和紅色。感知綠色的量是紅色的近2被,感知紅色的量是藍(lán)色的倆倍多,
# 因此在轉(zhuǎn)換為灰度時(shí),每個(gè) RGB 通道的權(quán)重不均勻,
# Y = 0.299 \times R + 0.587 \times G + 0.114 \times B
# 當(dāng)顏色無關(guān)緊要時(shí),通常使用圖像的灰度表示(例如在檢測人臉或構(gòu)建對象分類器時(shí),對象的顏色無關(guān)緊要)。因此丟棄顏色能夠節(jié)省內(nèi)存并提高計(jì)算效率。
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
cv2.imshow("Original", image)
cv2.imshow("Grayscale", gray)
cv2.waitKey(0)

參考

  • https://www.pyimagesearch.com/2021/04/28/opencv-color-spaces-cv2-cvtcolor/
  • https://docs.opencv.org/3.0-beta/doc/py_tutorials/py_imgproc/py_colorspaces/py_colorspaces.html#converting-colorspaces

總結(jié)

以上是生活随笔為你收集整理的OpenCV最经典的3种颜色空间(cv2.cvtColor)及互相转换的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 无遮挡aaaaa大片免费看 | a级黄色网址 | 国内精品国产三级国产aⅴ久 | av黄色网| 日韩欧美偷拍 | 91精品亚洲一区 | 一本一道久久a久久精品综合 | 黑名单上的人全集免费观看 | 情涩快播 | 麻豆久久久午夜一区二区 | 特黄特色大片免费视频大全 | ass亚洲熟妇毛耸耸pics | 伊人欧美在线 | 国产男女猛烈无遮挡免费视频动漫 | 欧洲黄色片 | 成人国产一区二区三区精品麻豆 | 精品女同一区二区 | 国产精品丝袜黑色高跟鞋的设计特点 | 91精品国自产在线 | 欧美不卡影院 | 亚洲a在线播放 | 中文无码精品一区二区三区 | 视频在线观看91 | av在线免费观看一区 | 欧美日韩免费观看一区=区三区 | 久久性色 | 亚洲逼院 | 国产中文在线 | 国产av天堂无码一区二区三区 | 清草视频 | 国产人妻精品一区二区三 | 亚洲一区中文字幕 | 全国男人的天堂网 | 色姐| 簧片av | 天天噜夜夜噜 | 国产一区欧美一区 | 中文字幕第31页 | 成人黄色免费在线观看 | 国产成人精品国内自产拍免费看 | 亚洲av永久无码精品国产精品 | 久久综合免费 | 免费一级黄 | 永久免费汤不热视频 | 处破女av一区二区 | 久久综合鬼色 | 国产黄色精品 | 一区二区三区视频免费观看 | 欧美人与性动交α欧美片 | 成人欧美精品一区二区 | 色射色| 亚洲两性| 成人免费大全 | 色交视频 | 99久久婷婷国产一区二区三区 | 国模吧无码一区二区三区 | 五月天精品| 91大神一区二区 | 成人国产一区二区 | 久久久久久久久久成人 | 6680新视觉电影免费观看 | 日本人xxxⅹ18hd19hd | 福利资源在线 | 97干视频 | 黄色一级片 | 香蕉视频在线观看免费 | 黄色网址你懂的 | 欧美性做爰大片免费 | 天天摸天天操天天射 | 男人用嘴添女人下身免费视频 | 麻豆精品久久久久久久99蜜桃 | 日本三级韩国三级三级a级按摩 | 美女一区二区三区四区 | 亚洲午夜激情视频 | 91在线看 | 丰满少妇一区二区三区专区 | 亚洲a视频 | 国产精品久久久国产盗摄 | se婷婷 | 麻豆av在线免费观看 | 四虎永久免费在线观看 | 亚洲av无码国产在丝袜线观看 | 亚洲精品视频网 | 婷婷tv | 日韩午夜高清 | 日本人妖xxxx | 欧美高清视频一区二区三区 | 青青草原国产在线观看 | 成人片黄网站久久久免费 | 正在播放经典国语对白 | 小毛片在线观看 | 久久精视频 | 国产一级片黄色 | 91av精品 | 在线免费av网| 欧美性在线视频 | 17草在线 | 国内精品人妻无码久久久影院蜜桃 | 亚洲精品午夜 |