0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

OpenCV入門(mén)之OpenCV的基本操作2

jf_78858299 ? 來(lái)源:DL INtoOUT ? 作者:AN ? 2023-02-07 14:19 ? 次閱讀

3、圖像基本認(rèn)知: RGB 、 Gray 、 HSV等

  • Gray****灰度圖

GARY色彩空間(灰度圖像)通常指8位灰度圖,具有256個(gè)灰度級(jí),像素值的范圍是[0,255]。不同數(shù)值表示不同程度的灰色。像素值越低,灰色越深。0表示純黑色,255表示純白色。GARY色彩空間為單通道,所以通常用二維數(shù)組表示一幅灰度圖像。

二值圖像:只有0和255兩種像素值的灰度圖像。

  • RBG****圖像

RGB是我們接觸最多的顏色空間,由三個(gè)通道表示一幅圖像,分別為紅色(R),綠色(G)和藍(lán)色(B)。這三種顏色的不同組合可以形成幾乎所有的其他顏色。

OpenCV中通道排序?yàn)?/strong>BGR

B(Blue) 藍(lán)色 取值范圍:[0,255]

G(Green) 綠色 取值范圍:[0,255]

R(Red) 紅色 取值范圍:[0,255]

自然環(huán)境下獲取的圖像容易受自然光照、遮擋和陰影等情況的影響,即對(duì)亮度比較敏感。而RGB顏色空間的三個(gè)分量都與亮度密切相關(guān),即只要亮度改變,三個(gè)分量都會(huì)隨之相應(yīng)地改變,而沒(méi)有一種更直觀(guān)的方式來(lái)表達(dá)。

  • HSV

H(Hue) 色調(diào),色相 取值范圍:[0,179]

S(Saturation) 飽和度,色彩純凈度 取值范圍:[0,255]

V(Value) 明度 取值范圍:[0,255]

HSV是一種將RGB色彩空間中的點(diǎn)在倒圓錐體中的表示方法。色相是色彩的基本屬性,就是平常說(shuō)的顏色的名稱(chēng),如紅色、黃色等。飽和度(S)是指色彩的純度,越高色彩越純,低則逐漸變灰,取0-100%的數(shù)值。明度(V),取0-max(計(jì)算機(jī)中HSV取值范圍和存儲(chǔ)的長(zhǎng)度有關(guān))。HSV顏色空間可以用一個(gè)圓錐空間模型來(lái)描述。圓錐的頂點(diǎn)處,V=0,H和S無(wú)定義,代表黑色。圓錐的頂面中心處V=max,S=0,H無(wú)定義,代表白色。

圖片

在圖像處理中使用較多的是HSV顏色空間,它比RGB更接近人們對(duì)彩色的感知經(jīng)驗(yàn)。非常直觀(guān)地表達(dá)顏色的色調(diào)、鮮艷程度和明暗程度,方便進(jìn)行顏色的對(duì)比。

  • HLS

H(Hue) 色相

L(Lightness) 亮度

S(Saturation) 飽和度

HLS中的L分量為亮度,亮度為100,表示白色,亮度為0,表示黑色;HSV 中的 V 分量為明度,明度為100,表示光譜色,明度為0,表示黑色。

圖片

4、通道分離與合并、色域轉(zhuǎn)換、像素運(yùn)算

def ChannelOp():
    # 通道分離與合并
    img = np.zeros([500,500,3],np.uint8)
    print(img.size,img.shape)
    # 通道分離,b,g,r
    b,g,r = cv2.split(img)
    # 將b,g通道中的10:100變成白色255,b+g混合后得到青色
    b[10:100,10:100] = 255
    g[10:100,10:100] = 255


    img1 = cv2.merge((b,g,r))
    cv2.imshow('imshow',img1)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

示例

圖片

def ConvertColor():
    img = cv2.imread("./images/test.jpg")
    # 色彩空間
    color_space = [cv2.COLOR_BGR2GRAY,cv2.COLOR_BGR2RGBA,
                  cv2.COLOR_BGR2RGB,cv2.COLOR_BGR2HLS,
                  cv2.COLOR_BGR2HSV,cv2.COLOR_BGR2YUV,
                   cv2.COLOR_BGR2BGRA]
    # 轉(zhuǎn)換
    gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    # 二值化處理
    # ower_red指的是圖像中低于這個(gè)lower_red的值,圖像值變?yōu)?
    # upper_red指的是圖像中高于這個(gè)upper_red的值,圖像值變?yōu)?
    # 在lower_red~upper_red之間的值變成255, 其余的為0
    lowerb = np.array([100,100,100])
    upperb = np.array([200, 200, 200])
    mask = cv2.inRange(img,lowerb=lowerb,upperb=upperb)
    cv2.imshow('imshow',mask)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

示例,二值化處理

圖片

圖像運(yùn)算

def PixelOp():
    img1 = cv2.imread('./images/10.jpg')
    img2 = cv2.imread('./images/test.jpg')
    # 需要兩張圖片大小格式完全一樣
    img1 = cv2.resize(img1,(720,400),interpolation=cv2.INTER_AREA)
    img2 = cv2.resize(img2, (720, 400), interpolation=cv2.INTER_AREA)
    # 對(duì)應(yīng)位置元素相加,如果大于255則取255
    new_img_add = cv2.add(img1,img2)
    # 對(duì)應(yīng)位置元素相減,如果小于0則取0
    new_img_sub = cv2.subtract(img1,img2)
    # 對(duì)應(yīng)位置元素相乘
    new_img_mu = cv2.multiply(img1,img2)
    # 對(duì)應(yīng)位置元素相除
    new_img_di = cv2.divide(img1,img2)
    # 圖像融合,按權(quán)重融合
    new_img_w = cv2.addWeighted(img1,0.2,img2,0.6,0)
    # 與或非,對(duì)應(yīng)元素進(jìn)行異或
    # 非:相當(dāng)于255-pixel,異或:兩者相等為0,不等為1
    new_img_and = cv2.bitwise_and(img1,img2)
    new_img_or = cv2.bitwise_or(img1,img2)
    new_img_not = cv2.bitwise_not(img1)
    new_img_xor = cv2.bitwise_xor(img1,img2)


    cv2.imshow("imshow",new_img_xor)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • matlab
    +關(guān)注

    關(guān)注

    182

    文章

    2960

    瀏覽量

    230045
  • 開(kāi)源
    +關(guān)注

    關(guān)注

    3

    文章

    3229

    瀏覽量

    42343
  • OpenCV
    +關(guān)注

    關(guān)注

    29

    文章

    625

    瀏覽量

    41218
  • ruby
    +關(guān)注

    關(guān)注

    0

    文章

    44

    瀏覽量

    3442
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    OpenCV_編程簡(jiǎn)介(入門(mén)必讀)

    opencv編程簡(jiǎn)介,入門(mén)必讀,適合新手簡(jiǎn)單了解opencv的相關(guān)知識(shí)。
    發(fā)表于 03-21 13:49 ?11次下載

    基本閾值操作_《OpenCV3編程入門(mén)》書(shū)本配套源代碼

    OpenCV3編程入門(mén)》書(shū)本配套源代碼:基本閾值操作
    發(fā)表于 06-06 15:39 ?8次下載

    基本鼠標(biāo)操作_《OpenCV3編程入門(mén)》書(shū)本配套源代碼

    OpenCV3編程入門(mén)》書(shū)本配套源代碼:基本鼠標(biāo)操作
    發(fā)表于 06-06 15:39 ?5次下載

    OpenCV進(jìn)行基本繪圖_《OpenCV3編程入門(mén)》書(shū)本配套源

    OpenCV3編程入門(mén)》書(shū)本配套源代碼:用OpenCV進(jìn)行基本繪圖
    發(fā)表于 05-11 16:46 ?36次下載

    支持向量機(jī)SVM引導(dǎo)_《OpenCV3編程入門(mén)》書(shū)本配套源代碼

    OpenCV3編程入門(mén)》書(shū)本配套源代碼:支持向量機(jī)SVM引導(dǎo)
    發(fā)表于 06-06 15:52 ?2次下載

    opencv備忘單

    opencv備忘單,opencv_cheatsheet,opencv_tutorials,opencv_user,opencv2refman2
    發(fā)表于 08-25 15:52 ?0次下載

    OpenCV3編程入門(mén)-源碼例程全集-OpenCV開(kāi)發(fā)環(huán)境的配置

    OpenCV3編程入門(mén)-源碼例程全集-OpenCV開(kāi)發(fā)環(huán)境的配置,感興趣的小伙伴們可以瞧一瞧。
    發(fā)表于 09-18 16:27 ?20次下載

    OpenCV3編程入門(mén)-源碼例程全集-基本閾值操作

    OpenCV3編程入門(mén)-源碼例程全集-基本閾值操作,感興趣的小伙伴們可以瞧一瞧。
    發(fā)表于 09-18 16:55 ?0次下載

    OpenCV3編程入門(mén)-源碼例程全集-基本鼠標(biāo)操作

    OpenCV3編程入門(mén)-源碼例程全集-基本鼠標(biāo)操作,感興趣的小伙伴們可以瞧一瞧。
    發(fā)表于 09-18 16:55 ?0次下載

    支持向量機(jī)SVM引導(dǎo)_OpenCV3編程入門(mén)-源碼例程

    OpenCV3編程入門(mén)-源碼例程全集-支持向量機(jī)SVM引導(dǎo),感興趣的小伙伴們可以瞧一瞧。
    發(fā)表于 09-18 17:02 ?1次下載

    OpenCV入門(mén)OpenCV的基本操作1

    OpenCV是一個(gè)基于A(yíng)pache2.0許可(開(kāi)源)發(fā)行的跨平臺(tái)計(jì)算機(jī)視覺(jué)和機(jī)器學(xué)習(xí)軟件庫(kù),可以運(yùn)行在Linux、Windows、Android和Mac OS操作系統(tǒng)上。它輕量級(jí)而且高效——由一系列
    的頭像 發(fā)表于 02-07 14:19 ?730次閱讀
    <b class='flag-5'>OpenCV</b><b class='flag-5'>入門(mén)</b><b class='flag-5'>之</b><b class='flag-5'>OpenCV</b>的基本<b class='flag-5'>操作</b>1

    OpenCV入門(mén)OpenCV的基本操作實(shí)戰(zhàn)代碼

    OpenCV是一個(gè)基于A(yíng)pache2.0許可(開(kāi)源)發(fā)行的跨平臺(tái)計(jì)算機(jī)視覺(jué)和機(jī)器學(xué)習(xí)軟件庫(kù),可以運(yùn)行在Linux、Windows、Android和Mac OS操作系統(tǒng)上。它輕量級(jí)而且高效——由一系列
    的頭像 發(fā)表于 02-07 14:24 ?745次閱讀

    OpenCV入門(mén)OpenCV的基本操作3

    OpenCV是一個(gè)基于A(yíng)pache2.0許可(開(kāi)源)發(fā)行的跨平臺(tái)計(jì)算機(jī)視覺(jué)和機(jī)器學(xué)習(xí)軟件庫(kù),可以運(yùn)行在Linux、Windows、Android和Mac OS操作系統(tǒng)上。它輕量級(jí)而且高效——由一系列
    的頭像 發(fā)表于 02-07 14:33 ?577次閱讀
    <b class='flag-5'>OpenCV</b><b class='flag-5'>入門(mén)</b><b class='flag-5'>之</b><b class='flag-5'>OpenCV</b>的基本<b class='flag-5'>操作</b>3

    OpenCV入門(mén)OpenCV的基本操作4

    OpenCV是一個(gè)基于A(yíng)pache2.0許可(開(kāi)源)發(fā)行的跨平臺(tái)計(jì)算機(jī)視覺(jué)和機(jī)器學(xué)習(xí)軟件庫(kù),可以運(yùn)行在Linux、Windows、Android和Mac OS操作系統(tǒng)上。它輕量級(jí)而且高效——由一系列
    的頭像 發(fā)表于 02-07 14:34 ?572次閱讀
    <b class='flag-5'>OpenCV</b><b class='flag-5'>入門(mén)</b><b class='flag-5'>之</b><b class='flag-5'>OpenCV</b>的基本<b class='flag-5'>操作</b>4

    OpenCV入門(mén)OpenCV的基本操作5

    OpenCV是一個(gè)基于A(yíng)pache2.0許可(開(kāi)源)發(fā)行的跨平臺(tái)計(jì)算機(jī)視覺(jué)和機(jī)器學(xué)習(xí)軟件庫(kù),可以運(yùn)行在Linux、Windows、Android和Mac OS操作系統(tǒng)上。它輕量級(jí)而且高效——由一系列
    的頭像 發(fā)表于 02-07 14:35 ?526次閱讀