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

python-opencv中的cv2.inRange函數(shù)用法說(shuō)明

 更新時(shí)間:2021年04月24日 11:18:03   作者:hjxu2016  
這篇文章主要介紹了python-opencv中的cv2.inRange函數(shù)用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

本次目標(biāo)是將一副圖像從rgb顏色空間轉(zhuǎn)換到hsv顏色空間,顏色去除白色背景部分

具體就調(diào)用了cv2的兩個(gè)函數(shù),一個(gè)是rgb轉(zhuǎn)hsv的函數(shù)

具體用法

hsv = cv2.cvtColor(rgb_image, cv2.COLOR_BGR2HSV)

然后利用cv2.inRange函數(shù)設(shè)閾值,去除背景部分

mask = cv2.inRange(hsv, lower_red, upper_red) #lower20===>0,upper200==>0,

函數(shù)很簡(jiǎn)單,參數(shù)有三個(gè)

第一個(gè)參數(shù):hsv指的是原圖

第二個(gè)參數(shù):lower_red指的是圖像中低于這個(gè)lower_red的值,圖像值變?yōu)?

第三個(gè)參數(shù):upper_red指的是圖像中高于這個(gè)upper_red的值,圖像值變?yōu)?

而在lower_red~upper_red之間的值變成255

lower_red = np.array([20, 20, 20])
upper_red = np.array([200, 200, 200])
mask = cv2.inRange(hsv, lower_red, upper_red) #lower20===>0,upper200==>0,lower~upper==>255

就是將低于lower_red和高于upper_red的部分分別變成0,lower_red~upper_red之間的值變成255

具體用法如下

 hsv = cv2.cvtColor(rgb_image, cv2.COLOR_BGR2HSV)
 lower_red = np.array([20, 20, 20])
 upper_red = np.array([200, 200, 200])
 # mask -> 1 channel
 mask = cv2.inRange(hsv, lower_red, upper_red) #lower20===>0,upper200==>0

補(bǔ)充:色彩閥值化處理——openCV-python中inRange()等相關(guān)函數(shù)實(shí)測(cè)

色彩閥值化

在圖像處理的過(guò)程中,使用各種形態(tài)學(xué)操作或者濾波的方式來(lái)突顯我們關(guān)注的元素,同時(shí)降低噪聲并減少干擾我們提取關(guān)鍵元素的影響項(xiàng)。除了這些方法外,我們可以在原圖中先依據(jù)顏色的特征,提取出更為關(guān)鍵的像素。就像車道檢測(cè)時(shí),一般車道只有兩種顏色:黃色和白色。所以我們可以在 RGB 色彩空間(Color Space) 對(duì)這兩種顏色進(jìn)行過(guò)濾從而提取出車道線的像素。

色彩空間:使用一組值(通常使用三個(gè)、四個(gè)值或者顏色成分)表示顏色方法的抽象數(shù)學(xué)模型。有利用原色相混的比例表示的色彩空間,如 RGB (Red, Green, Blue) 顏色空間; 也有利用不同的概念表示的色彩空間,如 HSV (色相 hue, 飽和度 saturation, 明度 value) 以及 HSL (色相 hue,飽和度 saturation,亮度 lightness/luminance) 。

在OpenCV中,RGB三通道的圖像的讀取 cv2.imread() 的結(jié)果是以 BGR 順序排列的,而在使用matplotlib的 plt.imread() 時(shí), 讀取的通道排列順序則為 RGB 。因此此處應(yīng)當(dāng)注意區(qū)別。

openCV中cv2.inRange()函數(shù)是實(shí)現(xiàn)該功能的關(guān)鍵,我們先看看官網(wǎng)對(duì)該函數(shù)的定義:

dst = cv.inRange( src, lowerb, upperb[, dst] )

檢測(cè)數(shù)組元素是否位于其他兩個(gè)元素之間。

該函數(shù)檢測(cè)范圍方式如下:

對(duì)于單通道輸入的每個(gè)元素:

對(duì)于雙通道輸入:

同樣應(yīng)用于四通道

也就是說(shuō),如果src (I)在指定的1D, 2D, 3D,…框內(nèi)則dst(I)為255,否則為0。當(dāng)下邊界和/或上邊界參數(shù)為標(biāo)量時(shí),應(yīng)省略上述公式中在上、下邊界處的索引(I)。

各參數(shù)詳細(xì)含義:

src 輸入的數(shù)組

lowerb 下邊界數(shù)組或標(biāo)量.

upperb 上邊界數(shù)組或標(biāo)量.

dst 與src和CV_8U類型大小相同的輸出數(shù)組。

接下來(lái)將結(jié)合簡(jiǎn)單的例子通過(guò)python更好地理解這個(gè)函數(shù):

import matplotlib.pyplot as plt
import numpy as np
import cv2
# 對(duì)圖片進(jìn)行讀取
img_cv2 = cv2.imread('D:\\test\\CVtest.jpg')
print(img_cv2)

為了方便理解,我用畫板工具畫了一個(gè)5×5像素點(diǎn)的紅色圖片。上述代碼運(yùn)行結(jié)果為:

[[[ 36  27 237]
  [ 36  27 237]
  [ 36  27 237]
  [ 36  27 237]
  [ 36  27 237]]
 [[ 36  27 237]
  [ 36  27 237]
  [ 36  27 237]
  [ 36  27 237]
  [ 36  27 237]]
 [[ 36  27 237]
  [ 36  27 237]
  [ 36  27 237]
  [ 36  27 237]
  [ 36  27 237]]
 [[ 36  27 237]
  [ 36  27 237]
  [ 36  27 237]
  [ 36  27 237]
  [ 36  27 237]]
 [[ 36  27 237]
  [ 36  27 237]
  [ 36  27 237]
  [ 36  27 237]
  [ 36  27 237]]]

讀者可以自行測(cè)試一下,B=36,G=27,R=237為紅色。

# 創(chuàng)建RGB色彩空間
color_Low1 = np.array([30,27,237])
color_Low2 = np.array([39,27,237])
color_High = np.array([40,27,237])
# 對(duì)圖片進(jìn)行閥值化處理
img_dst1 = cv2.inRange(img_cv2,color_Low1,color_High)
img_dst2 = cv2.inRange(img_cv2,color_Low2,color_High)
#對(duì)結(jié)果進(jìn)行打印
print(img_dst1,'\n', img_dst2)
# 運(yùn)行結(jié)果分別為
[[255 255 255 255 255]
 [255 255 255 255 255]
 [255 255 255 255 255]
 [255 255 255 255 255]
 [255 255 255 255 255]]
 [[0 0 0 0 0]
 [0 0 0 0 0]
 [0 0 0 0 0]
 [0 0 0 0 0]
 [0 0 0 0 0]]

可以看出,當(dāng)圖片中的像素點(diǎn)落在色彩空間時(shí),輸出結(jié)果全是255,當(dāng)像素點(diǎn)不落在色彩空間是,輸出結(jié)果全是0。對(duì)最終結(jié)果進(jìn)行顯示:

#對(duì)圖像進(jìn)行展示
cv2.imshow("origin_img",img_cv2)
cv2.imshow("dst_img1",img_dst1)
cv2.imshow("dst_img2",img_dst2)
cv2.waitKey(0)
cv2.destroyAllWindows()

最終結(jié)果為一個(gè)紅色、一個(gè)黑色的、一個(gè)白色的小點(diǎn)。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • OpenCV-Python實(shí)現(xiàn)腐蝕與膨脹的實(shí)例

    OpenCV-Python實(shí)現(xiàn)腐蝕與膨脹的實(shí)例

    形態(tài)學(xué)操作主要包含:腐蝕,膨脹,開運(yùn)算,閉運(yùn)算,形態(tài)學(xué)梯度運(yùn)算,頂帽運(yùn)算,黑帽運(yùn)算等操作,本文主要介紹了腐蝕與膨脹,感興趣的小伙伴們可以參考一下
    2021-06-06
  • python SOCKET編程基礎(chǔ)入門

    python SOCKET編程基礎(chǔ)入門

    這篇文章主要介紹了python SOCKET編程基礎(chǔ)入門的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-02-02
  • python os.system執(zhí)行cmd指令代碼詳解

    python os.system執(zhí)行cmd指令代碼詳解

    在本篇文章里小編給大家整理的是一篇關(guān)于python os.system執(zhí)行cmd指令代碼詳解內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2021-10-10
  • python創(chuàng)建列表和向列表添加元素的實(shí)現(xiàn)方法

    python創(chuàng)建列表和向列表添加元素的實(shí)現(xiàn)方法

    下面小編就為大家分享一篇python創(chuàng)建列表和向列表添加元素的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • Python?reflect單例模式反射各個(gè)函數(shù)

    Python?reflect單例模式反射各個(gè)函數(shù)

    這篇文章主要介紹了Python?reflect單例模式反射各個(gè)函數(shù),文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值需要的小伙伴可以參考一下
    2022-06-06
  • Python3.4實(shí)現(xiàn)遠(yuǎn)程控制電腦開關(guān)機(jī)

    Python3.4實(shí)現(xiàn)遠(yuǎn)程控制電腦開關(guān)機(jī)

    這篇文章主要為大家詳細(xì)介紹了Python3.4實(shí)現(xiàn)遠(yuǎn)程控制電腦開關(guān)機(jī)的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • Python演化計(jì)算基準(zhǔn)函數(shù)詳解

    Python演化計(jì)算基準(zhǔn)函數(shù)詳解

    這篇文章主要介紹了Python演化計(jì)算基準(zhǔn)函數(shù),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧,希望能夠給你帶來(lái)幫助
    2021-10-10
  • python制作朋友圈九宮格圖片

    python制作朋友圈九宮格圖片

    這篇文章主要為大家詳細(xì)介紹了python制作朋友圈九宮格圖片,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • Python中表格插件Tabulate的用法小結(jié)

    Python中表格插件Tabulate的用法小結(jié)

    這篇文章主要介紹了Python中表格插件Tabulate的用法,Tabulate插件是一個(gè)功能強(qiáng)大、簡(jiǎn)單易用的數(shù)據(jù)可視化工具,它能夠滿足我們?cè)赑ython中進(jìn)行表格數(shù)據(jù)展示的各種需求,通過(guò)使用Tabulate插件,我們能夠輕松地生成美觀且易讀的表格,需要的朋友可以參考下
    2023-11-11
  • python中的全局變量用法分析

    python中的全局變量用法分析

    這篇文章主要介紹了python中的全局變量用法,詳細(xì)分析了Python全局變量使用中的利弊與相關(guān)技巧,需要的朋友可以參考下
    2015-06-06

最新評(píng)論