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

OpenCV常用功能——灰度處理和圖像二值化處理

這篇具有很好參考價值的文章主要介紹了OpenCV常用功能——灰度處理和圖像二值化處理。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、灰度處理

1.1 cvtColor函數(shù)

函數(shù)原型:

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

功能:轉(zhuǎn)換圖像顏色空間。
參數(shù)

  • src: 輸入圖像。
  • code: 顏色空間轉(zhuǎn)換代碼。可以取常量cv2.COLOR_BGR2GRAY或cv2.COLOR_RGB2GRAY。
  • dst: 輸出圖像。
  • dstCn: 輸出圖像的通道數(shù),如果設置為0,則跟隨轉(zhuǎn)換代碼自動設置。

內(nèi)置函數(shù)示例代碼:

import cv2
img = cv2.imread("color.jpg")
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

cv2.imshow("Gray", img_gray)
cv2.waitKey(0)
cv2.destroyAllWindows()

灰度處理的原理是將彩色圖像轉(zhuǎn)換成灰度圖像,通常使用的方法是將彩色圖像的RGB三個通道的值加權(quán)平均,得到一個灰度值,再用這個灰度值代替RGB三個通道的值,從而得到灰度圖像。常用的加權(quán)平均公式是:
g r a y = 0.299 × R + 0.587 × G + 0.114 × B gray = 0.299 \times R + 0.587 \times G + 0.114 \times B gray=0.299×R+0.587×G+0.114×B
其中, R 、 G 、 B R、G、B RG、B分別是彩色圖像的紅、綠、藍通道的值, 0.299 、 0.587 、 0.114 0.299、0.587、0.114 0.299、0.587、0.114是加權(quán)系數(shù),這些系數(shù)是心理物理學中根據(jù)人眼對不同顏色敏感度的實驗結(jié)果得出的。這個公式也稱為亮度加權(quán)法,能夠比較好地保留彩色圖像的明暗對比度。

通過原理實現(xiàn)灰度處理代碼:

import cv2
img = cv2.imread('lean.jpg')
img = cv2.resize(img, (240, 240), interpolation=cv2.INTER_CUBIC)
height, width = img.shape[:2]
gray = np.zeros((height, width, 1), dtype="uint8")
for i in range(height):
    for j in range(width):
        gray[i][j] = img[i][j][0] * 0.114 + img[i][j][1] * 0.587 + img[i][j][2] * 0.299  # 加權(quán)值法
        # gray[i][j] = (img[i][j][0] +img[i][j][1]+img[i][j][2])/3#平均值法
        # gray[i][j] = max(img[i][j][0],img[i][j][1],img[i][j][2]) #最大值法
        
cv2.imshow("Gray", gray)
cv2.waitKey(0)
cv2.destroyAllWindows()

上述代碼逐個像素點計算灰度值,然后用灰度值代替RGB三個通道的值,得到灰度圖像并顯示出來。值得注意的是,這種方法雖然簡單易懂,但計算每個像素點的灰度值,效率較低,不適用于處理較大的圖像。在實際中,我們可以使用OpenCV提供的函數(shù)來實現(xiàn)灰度處理,以提高程序的執(zhí)行效率。

注意:灰度圖像在Python中數(shù)據(jù)類型是numpy的uint8類型,即8位無符號整型。

二、圖像二值化處理

圖像二值化處理是將灰度圖像上的像素點轉(zhuǎn)化為黑白兩種顏色的處理方法。其原理是將灰度圖像的像素值按一定的閾值進行分割,大于等于閾值的像素值設為一個值(通常是255),小于閾值的像素值設為另一個值(通常是0)。這樣得到的圖像就只有黑白兩種顏色,便于進行一些形態(tài)學處理和特征提取。

圖像二值化有兩種方法:全局閾值和自適應閾值。全局閾值是指將整個圖像的像素值都按照同一個閾值進行分割,而自適應閾值則是將圖像分割成若干個小塊,然后對每個小塊單獨計算閾值,從而得到更準確的分割結(jié)果。下面分別介紹這兩種方法的實現(xiàn)方式。

2.1 全局閾值

在OpenCV中,使用cv2.threshold()函數(shù)可以實現(xiàn)全局閾值二值化。函數(shù)原型如下:

retval, dst = cv2.threshold(src, thresh, maxval, type)

參數(shù)說明:

  • src為輸入圖像,必須為灰度圖。
  • dst為輸出圖像,尺寸和類型與原圖像相同。
  • thresh為設定的閾值。
  • maxval為最大值,當像素值大于閾值時,賦值為maxval。
  • type為閾值處理的類型,包括以下幾種類型:
    • cv2.THRESH_BINARY:二值化,當像素值大于閾值時,賦值為maxval,否則賦值為0。
    • cv2.THRESH_BINARY_INV:反二值化,當像素值大于閾值時,賦值為0,否則賦值為maxval。
    • cv2.THRESH_TRUNC:截斷,當像素值大于閾值時,賦值為閾值,否則不變。
    • cv2.THRESH_TOZERO:閾值以下歸零,當像素值小于閾值時,置為0,否則不變。
    • cv2.THRESH_TOZERO_INV:閾值以上歸零,當像素值大于閾值時,置為0,否則不變。

示例代碼如下:

import cv2

# 加載灰度圖
img_gray = cv2.imread('lena_gray.jpg', 0)

# 全局閾值二值化
retval, img_binary = cv2.threshold(img_gray, 128, 255, cv2.THRESH_BINARY)

# 顯示圖像
cv2.imshow('original', img_gray)
cv2.imshow('binary', img_binary)
cv2.waitKey()
cv2.destroyAllWindows()

其中,使用cv2.imread()加載灰度圖時,第二個參數(shù)必須設置為0,表示加載灰度圖。

2.2 自適應閾值

在OpenCV中,使用cv2.adaptiveThreshold()函數(shù)可以實現(xiàn)自適應閾值二值化。函數(shù)原型和前面的cv2.threshold()函數(shù)類似,但多了兩個參數(shù):

dst = cv2.adaptiveThreshold(src, maxval, adaptiveMethod, thresholdType, blockSize, C)

參數(shù)說明:

  • src為輸入圖像,必須為灰度圖。
  • maxValue為最大值,當像素值大于閾值時,賦值為maxValue。
  • adaptiveMethod為自適應閾值算法類型,包括以下兩種類型:
    • cv2.ADAPTIVE_THRESH_MEAN_C:計算每個小區(qū)域的平均灰度值作為閾值。
    • cv2.ADAPTIVE_THRESH_GAUSSIAN_C:計算每個小區(qū)域的高斯加權(quán)平均灰度值作為閾值。
  • thresholdType為閾值處理的類型,同全局閾值二值化函數(shù)。
  • blockSize為塊大小,要求為奇數(shù),代表自適應閾值計算時使用的小區(qū)域大小。
  • C為常數(shù),閾值減小的常數(shù)。
    實例代碼如下:
import cv2

# 加載灰度圖
img_gray = cv2.imread('lena_gray.jpg', 0)

# 自適應閾值二值化
img_binary = cv2.adaptiveThreshold(
    img_gray, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 127, 1)

# 顯示圖像
cv2.imshow('original', img_gray)
cv2.imshow('binary', img_binary)
cv2.waitKey()
cv2.destroyAllWindows()

其中,使用cv2.ADAPTIVE_THRESH_MEAN_C作為自適應閾值算法,計算每個小塊的平均值;使用cv2.THRESH_BINARY作為閾值處理的類型。閾值大小由blockSizeC兩個參數(shù)共同決定,可以通過調(diào)整這兩個參數(shù)來得到更適合的分割效果。文章來源地址http://www.zghlxwxcb.cn/news/detail-718326.html

到了這里,關于OpenCV常用功能——灰度處理和圖像二值化處理的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領支付寶紅包贊助服務器費用

相關文章

  • opencv圖片灰度二值化

    opencv圖片灰度二值化

    2024年02月13日
    瀏覽(27)
  • C#使用OpenCv(OpenCVSharp)圖像局部二值化處理實例

    ? 本文實例演示C#語言中如何使用OpenCv(OpenCVSharp)對圖像進行局部二值化處理。 目錄 圖像二值化原理 局部二值化 自適應閾值 實例 效果

    2024年02月13日
    瀏覽(25)
  • C#使用OpenCv(OpenCVSharp)圖像全局二值化處理實例

    本文實例演示C#語言中如何使用OpenCv(OpenCVSharp)對圖像進行全局二值化處理。 目錄 圖像二值化原理 函數(shù)原型 參數(shù)說明 實例 效果

    2024年02月13日
    瀏覽(30)
  • OpenCV-Python學習(10)—— OpenCV 圖像二值化處理(cv.threshold)

    OpenCV-Python學習(10)—— OpenCV 圖像二值化處理(cv.threshold)

    1. 學習目標 理解圖像的分類,不同類型的圖像的區(qū)別; 對圖像進行二值化處理,對【 cv.threshold 】函數(shù)的理解。 2. 圖像分類 2.1 不同類型圖像說明 按照顏色對圖像進行分類,可以分為二值圖像、灰度圖像和彩色圖像。 二值圖像: 只有黑色和白色兩種顏色的圖像。 每個像素

    2024年02月03日
    瀏覽(103)
  • OPENCV C++(三)二值化灰度函數(shù)+調(diào)用攝像頭+鼠標響應+膚色檢測

    圖像 目標圖像 rgb轉(zhuǎn)灰度 灰度圖,目標圖,閾值,大于閾值的轉(zhuǎn)換的像素值,方法為大津法 灰度圖,目標圖,大于閾值的轉(zhuǎn)換的像素值,自適應方法,二值化方法 雖然人物的信息丟失了很多,但是背景基本上被去掉了。丟失的人物的信息可以通過位運算等恢復。在去除背景

    2024年02月14日
    瀏覽(160)
  • opencv(20) 圖像閾值(二值化)

    opencv(20) 圖像閾值(二值化)

    二值化核心思想,設閾值,大于閾值的為0(黑色)或 255(白色),使圖像稱為黑白圖。 閾值可固定,也可以自適應閾值。 自適應閾值一般為一點像素與這點為中序的區(qū)域像素平均值或者高斯分布加權(quán)和的比較,其中可以設置一個差值也可以不設置。 圖像的閾值化旨在提取

    2024年02月02日
    瀏覽(24)
  • OpenCV(八):圖像二值化

    OpenCV(八):圖像二值化

    目錄 1.固定值二值化 2.自適應閾值二值化 3.Android JNI完整代碼 1.固定值二值化 固定閾值二值化是OpenCV中一種簡單而常用的圖像處理技術,用于將圖像轉(zhuǎn)換為二值圖像。在固定閾值二值化中,像素值根據(jù)一個預定義的閾值進行分類,大于閾值的像素被設置為白色,而小于或等于

    2024年02月10日
    瀏覽(24)
  • [2] 圖像處理之----二值化處理

    [2] 圖像處理之----二值化處理

    簡單閾值是選取一個全局閾值,然后把整幅圖像分成非黑即白的二值圖像,灰度值大于閾值就賦為255反之為0。 ret,mask = cv2.threshold(img2gray,175,255,cv2.THRESH_BINAR) 返回值一: 閾值,(Otsu‘s二值化會用到) 返回值二: 處理以后的圖像 參數(shù)一: 初始圖像 參數(shù)二:我們自己設定的閾

    2024年02月05日
    瀏覽(24)
  • 圖像二值化算法

    圖像二值化算法

    圖像二值化( Image Binarization)就是將圖像上的像素點的灰度值設置為0或255,也就是將整個圖像呈現(xiàn)出明顯的黑白效果的過程。二值圖像每個像素只有兩種取值:要么純黑,要么純白。進行二值化有多種方式,其中最常用的就是采用閾值法(Thresholding)進行二值化。 根據(jù)閾值

    2024年02月06日
    瀏覽(48)
  • 使用OpenCV C++進行圖像二值化操作

    使用OpenCV C++進行圖像二值化操作

    threshold()將固定閾值應用于多通道圖像陣列,通常用于從灰度圖像中獲得二值圖像或用于去除噪聲,即濾除值過小或過大的像素。該函數(shù)支持幾種類型的閾值設置,它們由類型參數(shù)決定。 src:輸入數(shù)組(多通道,8位或32位浮點數(shù)) dst:輸出數(shù)組(與src的尺寸、類型、通道數(shù)相

    2024年02月03日
    瀏覽(25)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領取紅包

二維碼2

領紅包