国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

我在Vscode學OpenCV 色彩空間轉(zhuǎn)換

這篇具有很好參考價值的文章主要介紹了我在Vscode學OpenCV 色彩空間轉(zhuǎn)換。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

色彩

即是顏色,一種人體視覺系統(tǒng)對光的反射的不同波長的感知的結(jié)果。人們又對不同的波長范圍的電磁波定義可視光的“顏色”。

在日常生活、美術(shù)課中,通過把(紅黃藍)三種顏色成為”認為是能夠混合得到其他所有顏色的顏料。
而對于光學,就把(紅綠藍RGB)三基色【此處為了區(qū)分名字】是能夠創(chuàng)建其他顏色的基本。

例如,RGB值(255, 0, 0)表示純紅色,(0, 255, 0)表示純綠色,(0, 0, 255)表示純藍色,(0, 0, 0)表示黑色,(255, 255, 255)表示白色。

【 1 】色彩空間(色域)

一種抽象的數(shù)學模型,以不同的維度和表示方式,色彩學中,人們建立了多種色彩模型,以一維、二維、三維甚至四維空間坐標來表示某一色彩,這種坐標系統(tǒng)所能定義的色彩范圍即色彩空間。我們經(jīng)常用到的色彩空間主要有RGB、CMYK、Lab等。

常見的:

(1)RGB色彩空間

三種基本顏色的不同組合來表示顏色,在計算機圖像和電視顯示技術(shù)中廣泛使用。

與xyz色彩空間的轉(zhuǎn)換

我在Vscode學OpenCV 色彩空間轉(zhuǎn)換,OpenCV,vscode,opencv,ide

將 RGB 色彩空間轉(zhuǎn)換為 XYZ 色彩空間

我在Vscode學OpenCV 色彩空間轉(zhuǎn)換,OpenCV,vscode,opencv,ide

import cv2 as cv

# 讀取RGB圖像
img_rgb = cv.imread("image.jpg")

# 將RGB圖像轉(zhuǎn)換為XYZ圖像
img_xyz = cv.cvtColor(img_rgb, cv.COLOR_BGR2XYZ)
將 XYZ 色彩空間轉(zhuǎn)換為 RGB 色彩空間

我在Vscode學OpenCV 色彩空間轉(zhuǎn)換,OpenCV,vscode,opencv,ide

import cv2 as cv

# 讀取XYZ圖像
img_xyz = cv.imread("image.jpg")

# 將XYZ圖像轉(zhuǎn)換為RGB圖像
img_rgb = cv.cvtColor(img_xyz, cv.COLOR_XYZ2BGR)

(2)CMYK色彩空間

青色(Cyan)、品紅(Magenta)、黃色(Yellow)加上黑色(Key)四種基本顏色的不同組合來表示顏色。主要用于印刷業(yè)。[全彩印刷]

此處縮寫使用最后一個字母K而非開頭的B,是因為在整體色彩學中已經(jīng)將B給了RGB的Blue藍色我在Vscode學OpenCV 色彩空間轉(zhuǎn)換,OpenCV,vscode,opencv,ide

(3)HSV(Hue, Saturation, Value)色彩空間

HSV代表色調(diào)(Hue)、飽和度(Saturation)、明度(Value)。

  • 色調(diào)(Hue):表示顏色的種類,如紅色、藍色、綠色等。在HSV模型中,色調(diào)被表示為角度,范圍從0到360度。若從紅色開始按逆時針方向計算,紅色為0°,綠色為120°,藍色為240°。它們的補色是:黃色為60°,青色為180°,紫色為300°;
  • 飽和度(Saturation):表示顏色的純度,飽和度越高,顏色越純,飽和度越低,顏色越接近灰色。在HSV模型中,飽和度的范圍是0到1。
  • 明度(Value):表示顏色的亮度。在HSV模型中,明度的范圍也是0到1,0表示完全的黑色,1表示最亮的顏色。

OpenCV中,可以使用cv.cvtColor函數(shù)將RGB色彩空間轉(zhuǎn)換為HSV色彩空間

hsv_image = cv.cvtColor(rgb_image, cv.COLOR_RGB2HSV)

我在Vscode學OpenCV 色彩空間轉(zhuǎn)換,OpenCV,vscode,opencv,ide
色調(diào)(Hue)是指光的顏色,與光的波長相關(guān)。不同的波長對應不同的色調(diào),例如紅色、橙色、黃色等。

飽和度(Saturation)表示顏色的純凈度或深淺程度。高飽和度的顏色是純凈的,沒有混合其他顏色的成分。低飽和度的顏色則含有更多的灰色或白色成分,使其看起來較淡。

亮度(Value)反映了光的明暗程度,即顏色的明亮度。較高的亮度表示顏色較亮,較低的亮度表示顏色較暗。亮度受到顏色中白色或黑色成分的影響,白色成分增加會使亮度增加,黑色成分增加會使亮度減少。

這些概念描述了顏色的不同特性,色調(diào)決定了顏色的種類,飽和度決定了顏色的純凈度,亮度決定了顏色的明暗程度。

(4)YUV和YCbCr色彩空間

Y表示亮度信息,U和V或Cb和Cr表示色度信息,這種分離的方式使得視頻壓縮更為高效。

我在Vscode學OpenCV 色彩空間轉(zhuǎn)換,OpenCV,vscode,opencv,ide
我在Vscode學OpenCV 色彩空間轉(zhuǎn)換,OpenCV,vscode,opencv,ide

【 2 】色彩空間轉(zhuǎn)換

是指有一種色彩空間的狀態(tài)以另一種方式表現(xiàn)出來。
例如:RGB -> HSV 或者RGB -> GRAY
而在OpenCV中,cv的表現(xiàn)是BGR那么就是BGR向HSV或者GRAY等的轉(zhuǎn)變

cv.cvtColor(input_image,flag)

input_image 是需要進行空間轉(zhuǎn)換的圖像
flag為轉(zhuǎn)換后的類型

cv.COLOR_BGR2GRAY:bgr->gray

cv.COLOR_BGR2HSV:bgr->hsv 

2.1 GRAY色彩空間

GRAY色彩空間,也被稱作灰度色彩空間,每個像素按照一個通道去 ’ 灰度 ’ 表示。

這種灰度在先前也介紹過,當時我們以二值圖像為引,二值是非黑即白的圖像,而在灰度圖中給其劃分開了 ‘ 灰度級別 ’ (只有256個灰度級別,像素值的范圍:[0,255] ,由黑向白)

它可以幫助在圖像處理和計算機視覺人物中簡化問題,降低復雜性,同時仍然保留了大部分的結(jié)構(gòu)和形狀信息。

2.1.1 轉(zhuǎn)換方式:

Gray = 0.299*R + 0.587*G + 0.114*B

這種權(quán)重分布是基于人眼對不同顏色的敏感度來設(shè)計的。人眼對綠色的敏感度最高,紅色次之,藍色最低。這是因為人眼中的視網(wǎng)膜上有三種類型的顏色感受器,分別對紅色、綠色和藍色光最為敏感。

2.1.2 BGR -> GRAY

由于OpenCV默認是BGR的顯示方式。
可以使用cvtColor函數(shù)是OpenCV庫中的一個函數(shù),用于將圖像從一個顏色空間轉(zhuǎn)換到另一個顏色空間。

cvtColor(src, code[, dst[, dstCn]]) -> dst

我在Vscode學OpenCV 色彩空間轉(zhuǎn)換,OpenCV,vscode,opencv,ide

The conventional ranges for R, G, and B channel values are:
. - 0 to 255 for CV_8U images
. - 0 to 65535 for CV_16U images
. - 0 to 1 for CV_32F images

參數(shù):
我在Vscode學OpenCV 色彩空間轉(zhuǎn)換,OpenCV,vscode,opencv,ide

import numpy as np
import cv2 as cv

# 讀取一張彩色圖片
img = cv.imread('./Pic/test_img.jpg')

# 創(chuàng)建一個與輸入圖像同樣大小的空圖像,用于存儲轉(zhuǎn)換結(jié)果
dst = np.zeros_like(img)

# 使用cvtColor函數(shù)將圖片從BGR色彩空間轉(zhuǎn)換到灰度色彩空間
# 我們提供了dst參數(shù),所以函數(shù)將把轉(zhuǎn)換結(jié)果存儲在這個圖像中
# 我們也提供了dstCn參數(shù),指定輸出圖像的通道數(shù)為1
cv.cvtColor(img, cv.COLOR_BGR2GRAY, dst=dst, dstCn=1)

# 打印轉(zhuǎn)換后的圖像的通道數(shù),應該為1
print(dst.shape)

# (864, 1920, 3)

np.zeros_like(img)將創(chuàng)建一個與img具有相同形狀(即相同的行數(shù)和列數(shù))和數(shù)據(jù)類型的全零數(shù)組。這意味著返回的數(shù)組將具有與img相同的維度,并且每個元素都將被初始化為零。

這個函數(shù)在上述示例中的作用是創(chuàng)建一個與輸入圖像img具有相同大小和深度的空圖像,用于存儲cvtColor函數(shù)的轉(zhuǎn)換結(jié)果。通過使用np.zeros_like(img),我們可以確保創(chuàng)建的空圖像與輸入圖像具有相同的形狀和數(shù)據(jù)類型,從而避免了在轉(zhuǎn)換過程中出現(xiàn)大小或類型不匹配的錯誤。
我在Vscode學OpenCV 色彩空間轉(zhuǎn)換,OpenCV,vscode,opencv,ide

原圖我在Vscode學OpenCV 色彩空間轉(zhuǎn)換,OpenCV,vscode,opencv,ide

沒有參數(shù)

import cv2 as cv

# 讀取一張彩色圖片
img = cv.imread('pic.jpg')

# 使用cvtColor函數(shù)將圖片從BGR色彩空間轉(zhuǎn)換到灰度色彩空間
gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)

# 打印轉(zhuǎn)換后的圖像的通道數(shù),應該為1
print(gray.shape)

2.1.3 如何證明Gray = 0.299*R + 0.587*G + 0.114*B

(1) 把彩色圖拆分成三層圖層

使用函數(shù)b,g,r=cv.split(img1)

Step1: 基本代碼

import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt

img1=cv.imread("Pic/test_img.jpg")
# img1=cv.imread("Pic/test_img.jpg",0)  實現(xiàn)下面的同理
src=cv.cvtColor(img1,cv.COLOR_BGR2GRAY)
plt.imshow(img1[:,:,::-1])

我在Vscode學OpenCV 色彩空間轉(zhuǎn)換,OpenCV,vscode,opencv,ide

Step2:拆分

b,g,r=cv.split(img1)
img1

我在Vscode學OpenCV 色彩空間轉(zhuǎn)換,OpenCV,vscode,opencv,ide
Step3:拆分情況
[ 1 ] 灰度的src(原圖img1)
我在Vscode學OpenCV 色彩空間轉(zhuǎn)換,OpenCV,vscode,opencv,ide
[ 2 ] b
我在Vscode學OpenCV 色彩空間轉(zhuǎn)換,OpenCV,vscode,opencv,ide
[ 3 ] g
我在Vscode學OpenCV 色彩空間轉(zhuǎn)換,OpenCV,vscode,opencv,ide
[ 4 ] r
我在Vscode學OpenCV 色彩空間轉(zhuǎn)換,OpenCV,vscode,opencv,ide
Step4:計算(因為是整數(shù)所以會四舍五入計算)
我在Vscode學OpenCV 色彩空間轉(zhuǎn)換,OpenCV,vscode,opencv,ide

(2)證明當圖像由 GRAY 色彩空間轉(zhuǎn)換為 RGB 色彩空間時,最終所有通道的值都將是相同的。

從灰度圖像(GRAY)轉(zhuǎn)換回RGB圖像時,所有的R、G、B通道的值都會是相同的。這是因為灰度圖像只有一個通道,所以在轉(zhuǎn)換回RGB圖像時,這個單一的通道的值會被復制到R、G、B三個通道。

import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt

# 讀取灰度圖像
img_gray = cv.imread("Pic/test_img.jpg", 0)

# 將灰度圖像轉(zhuǎn)換為RGB圖像
img_rgb = cv.cvtColor(img_gray, cv.COLOR_GRAY2BGR)

# 分離RGB通道
b, g, r = cv.split(img_rgb)

# 檢查R、G、B三個通道的值是否相同
print("R == G: ", np.all(r == g))
print("R == B: ", np.all(r == b))
print("G == B: ", np.all(g == b))

首先讀取一個灰度圖像,然后將其轉(zhuǎn)換為RGB圖像。然后,它分離出R、G、B三個通道,并檢查這三個通道的值是否相同。如果所有的輸出都是True,那么就證明了在從灰度圖像轉(zhuǎn)換為RGB圖像時,所有的R、G、B通道的值都是相同的。
我在Vscode學OpenCV 色彩空間轉(zhuǎn)換,OpenCV,vscode,opencv,ide

RGB三個通道的值
我在Vscode學OpenCV 色彩空間轉(zhuǎn)換,OpenCV,vscode,opencv,ide

【3】類型轉(zhuǎn)換函數(shù)

dst = cv2.cvtColor( src, code [, dstCn] )

cv2.cvtColor() 是OpenCV中的一個函數(shù),用于進行顏色空間的轉(zhuǎn)換。它接受三個參數(shù):

  • src:輸入圖像,可以是一個NumPy數(shù)組或一個OpenCV的Mat對象。
  • code:顏色空間轉(zhuǎn)換的代碼,指定了要進行的轉(zhuǎn)換類型。常見的轉(zhuǎn)換類型包括:
  • cv2.COLOR_BGR2GRAY:將BGR圖像轉(zhuǎn)換為灰度圖像。
  • cv2.COLOR_BGR2HSV:將BGR圖像轉(zhuǎn)換為HSV色彩空間。
  • cv2.COLOR_BGR2RGB:將BGR圖像轉(zhuǎn)換為RGB色彩空間。
  • 其他轉(zhuǎn)換類型可以在OpenCV的文檔中找到。
  • dstCn(可選):目標圖像的通道數(shù)。默認值為0,表示與輸入圖像的通道數(shù)相同。

函數(shù)的返回值是轉(zhuǎn)換后的圖像,以NumPy數(shù)組的形式返回。

【4】標記指定顏色

在 HSV 色彩空間中,H 通道(飽和度 Hue 通道)對應不同的顏色。

1.通過inRange函數(shù)鎖定特定值

OpenCV 中通過函數(shù) cv2.inRange()來判斷圖像內(nèi)像素點的像素值是否在指定的范圍內(nèi),其
語法格式為:
dst = cv2.inRange( src, lowerb, upperb )
式中:
? dst 表示輸出結(jié)果,大小和 src 一致。
? src 表示要檢查的數(shù)組或圖像。
? lowerb 表示范圍下界。
? upperb 表示范圍上界。
返回值 dst 與 src 等大小,其值取決于 src 中對應位置上的值是否處于區(qū)間[lowerb,upperb]
內(nèi):
? 如果 src 值處于該指定區(qū)間內(nèi),則 dst 中對應位置上的值為 255。
? 如果 src 值不處于該指定區(qū)間內(nèi),則 dst 中對應位置上的值為 0

HSV色彩空間

藍色的RGB值為[[[255 0 0]]],轉(zhuǎn)換為HSV值為[[[120 255 255]]]。
綠色的RGB值為[[[0 255 0]]],轉(zhuǎn)換為HSV值為[[[60 255 255]]]。
紅色的RGB值為[[[0 0 255]]],轉(zhuǎn)換為HSV值為[[[0 255 255]]]。文章來源地址http://www.zghlxwxcb.cn/news/detail-752668.html

到了這里,關(guān)于我在Vscode學OpenCV 色彩空間轉(zhuǎn)換的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • 我在Vscode學OpenCV 處理圖像

    我在Vscode學OpenCV 處理圖像

    既然我們是面向Python的OpenCV(OpenCV for Python)那我們就必須要熟悉Numpy這個庫,尤其是其中的數(shù)組的庫,Python是沒有數(shù)組的,唯有借助他庫才有所實現(xiàn)想要的目的。 2.1.1 單通道__二值圖像 白色像素點(白色小方塊區(qū)域)處理為“1”,將黑色像素點(黑色小方塊區(qū)域)處理為“

    2024年02月06日
    瀏覽(25)
  • 我在Vscode學OpenCV 初步接觸

    我在Vscode學OpenCV 初步接觸

    OpenCV是一個開源的計算機視覺庫,可以處理圖像和視頻數(shù)據(jù)。它包含了超過2500個優(yōu)化過的算法,用于對圖像和視頻進行處理,包括目標識別、面部識別、運動跟蹤、立體視覺等。OpenCV支持多種編程語言,包括C++、Python、Java等,可以在Windows、Linux、Mac OS X、Android等多個平臺上

    2024年02月08日
    瀏覽(23)
  • 我在Vscode學OpenCV 基本的加法運算

    我在Vscode學OpenCV 基本的加法運算

    鏈接:《我在Vscode學OpenCV 處理圖像》 屬性— API 形狀 img.shape 圖像大小 img.size 數(shù)據(jù)類型 img.dtype ? shape:如果是彩色圖像,則返回包含行數(shù)、列數(shù)、通道數(shù)的數(shù)組;如果是二值圖像或者灰度圖像,則僅返回行數(shù)和列數(shù)。通過該屬性的返回值是否包含通道數(shù),可以判斷一幅圖像

    2024年02月05日
    瀏覽(23)
  • 初學opencv c++學習筆記(二)圖像空間色彩轉(zhuǎn)換cvtColor()

    初學opencv c++學習筆記(二)圖像空間色彩轉(zhuǎn)換cvtColor()

    對圖像的色彩轉(zhuǎn)換用到cvtColor()函數(shù),本章將對此其用法進行解析。 目錄 一、色彩空間轉(zhuǎn)換 官方定義 ?函數(shù)參數(shù)解釋 代碼演示 RGB——HSV? RGB——GRAY ?BGR——RGB 總結(jié) 提示:以下是本篇文章正文內(nèi)容,下面案例可供參考 APL:cvtColor() 1. src (source):輸入的源圖像。為矩陣形式。

    2024年02月05日
    瀏覽(28)
  • opencv-19 圖像色彩空間轉(zhuǎn)換函數(shù)cv2.cvtColor()

    opencv-19 圖像色彩空間轉(zhuǎn)換函數(shù)cv2.cvtColor()

    cv2.cvtColor() 函數(shù)是 OpenCV 中用于圖像顏色空間轉(zhuǎn)換的函數(shù)。它允許你將圖像從一個色彩空間轉(zhuǎn)換為另一個色彩空間。在 Python 中,你可以使用這個函數(shù)來實現(xiàn)不同色彩空間之間的轉(zhuǎn)換。 函數(shù)的基本語法為: 參數(shù)說明: src:輸入圖像,可以是 NumPy 數(shù)組或 OpenCV 中的 Mat 對象。

    2024年02月15日
    瀏覽(24)
  • 我在Vscode學OpenCV 圖像處理五(直方圖處理)

    我在Vscode學OpenCV 圖像處理五(直方圖處理)

    直方圖是一種統(tǒng)計圖,顯示了圖像中每個灰度級別(或顏色通道)的像素數(shù)量。通過分析圖像的直方圖,可以獲得關(guān)于圖像對比度、亮度和顏色分布等方面的重要信息。 了解圖像的對比度、亮度和色彩分布等信息。你可以使用OpenCV中的函數(shù)來計算和繪制圖像的直方圖,從而進

    2024年01月21日
    瀏覽(26)
  • 我在Vscode學OpenCV 圖像處理二(濾除噪聲干擾)

    我在Vscode學OpenCV 圖像處理二(濾除噪聲干擾)

    圖像平滑處理是一種用于減少圖像噪聲并模糊圖像的技術(shù),使圖像更加清晰或者更容易進行其他圖像處理操作的方法之一。 圖像平滑處理的目標之一就是消除或減少這些噪聲,使圖像更清晰、更易于分析或更適合后續(xù)處理。不同的平滑技術(shù)可以在一定程度上模糊圖像,從而有

    2024年02月05日
    瀏覽(25)
  • 我在Vscode學OpenCV 幾何變換(縮放、翻轉(zhuǎn)、仿射變換、透視、重映射)

    我在Vscode學OpenCV 幾何變換(縮放、翻轉(zhuǎn)、仿射變換、透視、重映射)

    幾何變換指的是將一幅圖像映射到另一幅圖像內(nèi)的操作。 cv2.warpAffine :使用仿射變換矩陣對圖像進行變換,可以實現(xiàn)平移、縮放和旋轉(zhuǎn)等操作。 cv2.warpPerspective :使用透視變換矩陣對圖像進行透視變換,可以實現(xiàn)鏡頭校正、圖像糾偏等操作。 cv2.getAffineTransform :計算仿射變換

    2024年02月05日
    瀏覽(33)
  • C++實戰(zhàn)Opencv第二天——色彩空間轉(zhuǎn)換函數(shù)和opencv中圖像對象創(chuàng)建與賦值(從零開始,保姆教學)

    C++實戰(zhàn)Opencv第二天——色彩空間轉(zhuǎn)換函數(shù)和opencv中圖像對象創(chuàng)建與賦值(從零開始,保姆教學)

    OpenCV是一個強大的計算機視覺庫,使用C++作為主要編程語言,對于圖像處理和計算機視覺領(lǐng)域具有重要意義。其提供了豐富的功能和算法,使得開發(fā)者能夠快速實現(xiàn)各種圖像處理和計算機視覺應用。OpenCV C++為圖像處理和計算機視覺領(lǐng)域的開發(fā)者提供了一個高效、穩(wěn)定的工具。

    2024年02月20日
    瀏覽(36)
  • 我在Vscode學OpenCV 圖像處理四(輪廓查找 cv2.findContours() cv2.drawContours())-- 待補充

    我在Vscode學OpenCV 圖像處理四(輪廓查找 cv2.findContours() cv2.drawContours())-- 待補充

    在OpenCV中,邊緣檢測和輪廓查找是兩個不同的圖像處理任務,它們有不同的目標和應用。 1.1.1 邊緣檢測: 定義: 邊緣檢測是指尋找圖像中灰度級別變化明顯的地方,即圖像中物體之間的界限。這些變化通常表示圖像中的邊緣或輪廓。 方法: 常用的邊緣檢測算法包括Sobel、

    2024年02月03日
    瀏覽(95)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包