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

python圖像處理實(shí)戰(zhàn)(二)—二值化圖像與線性變換

這篇具有很好參考價(jià)值的文章主要介紹了python圖像處理實(shí)戰(zhàn)(二)—二值化圖像與線性變換。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

python圖像處理實(shí)戰(zhàn)(二)—二值化圖像與線性變換

??寫在前面??

??個(gè)人主頁(yè):https://blog.csdn.net/m0_52051577?type=blog?

??歡迎各位大佬支持點(diǎn)贊收藏,三連必回??!

??本人新開(kāi)系列專欄—python圖像處理

?愿每一個(gè)驟雨初晴之時(shí),所有的蜻蜓振翅和雨后驚雷,都?xì)w你。

前言

????????首先引入以下灰度變換的概念。

????????灰度變換是指根據(jù)某種目標(biāo)條件按一定變換關(guān)系逐點(diǎn)改變?cè)磮D像中每一個(gè)像素灰度值的方法。目的是?為了改善畫質(zhì),使圖像的顯示效果更加清晰。?圖像的灰度變換處理是圖像增強(qiáng)處理技術(shù)中的一種非?;A(chǔ)、直接的空間域圖像處理方法,也是圖像數(shù)字化軟件和圖像顯示軟件的一個(gè)重要組成部分?!獊?lái)自百度百科

? ? ? ? 這里采用opencv中的二值化相關(guān)方法進(jìn)行灰度處理,進(jìn)行灰度變換的非線性變換。

目錄

一、所需函數(shù)

二、圖像基本知識(shí)

1、自定義圖像

?2、三種常見(jiàn)圖像相互轉(zhuǎn)換

3、通道分離與合并?

三、圖像運(yùn)算

?四、實(shí)例


?注:本文涉及到的圖片資源可在博客積分資源中獲取,相關(guān)鏈接:https://download.csdn.net/download/m0_52051577/87844285?spm=1001.2014.3001.5503

一、所需函數(shù)

## 1. 圖像讀取
img = cv.imread()

## 2. 彩色圖轉(zhuǎn)灰度圖
img_gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)

## 3. 二值化圖像(灰度圖轉(zhuǎn)二值圖)
_, img_bin = cv.threshold(img_gray, th1, th2, cv.THRESH_BINARY)

## 4. 保存圖像
cv.imwrite('pic/bear_gray.jpg', img_gray)

## 5. 通道分離
b, g, r = cv.split(img)

## 6. 通道合并
img_new = cv.merge([b, g, r])

## 7. 兩圖像相加、相減、相乘、相除
img = cv.add(img1, img2)
img = cv.subtract(img1, img2)
img = cv.multiply(img1, img2)
img = cv.divide(img1, img2)

二、圖像基本知識(shí)

1、自定義圖像

b = np.array([
    [0, 127, 255],
    [255, 0, 255],
    [10, 50, 100]
], dtype=np.uint8)

g = b.T
r = b - g

# show(b)
show(cv.merge([b, g, r]))

# cv.imwrite()

python圖像處理實(shí)戰(zhàn)(二)—二值化圖像與線性變換?

注:其中,b矩陣中的三個(gè)行向量分別表示純色圖像,其中0表示純黑,255表示純白。g表示b的轉(zhuǎn)置矩陣,r則是將b與g矩陣對(duì)應(yīng)元素相減,最后再用merge函數(shù)將b,g,r三個(gè)單通道的純色圖像合并成一張真彩色三通道圖像。?

RGB顏色對(duì)照表鏈接:RGB顏色對(duì)照表

?2、三種常見(jiàn)圖像相互轉(zhuǎn)換

首先預(yù)先定義函數(shù)。 若圖片的維度為2,即灰度圖,則讀取并展示圖片;若不為灰度圖,即彩色圖,則采用cvtColor()函數(shù)進(jìn)行色彩空間的轉(zhuǎn)換。

def show(img):
    if img.ndim == 2:
        plt.imshow(img, cmap='gray')
    else:
        plt.imshow(cv.cvtColor(img, cv.COLOR_BGR2RGB))
    plt.show()
# 讀取彩色圖
img = cv.imread('pic/bear500x333.jpg')
# print(img)
show(img)

?python圖像處理實(shí)戰(zhàn)(二)—二值化圖像與線性變換

# 讀取灰度圖
img_gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
show(img_gray)

?python圖像處理實(shí)戰(zhàn)(二)—二值化圖像與線性變換

如圖,已經(jīng)將彩色圖進(jìn)行灰度處理。?

# 二值化圖像
_, img_bin = cv.threshold(img_gray, 150, 255, cv.THRESH_BINARY)
show(img_bin)

python圖像處理實(shí)戰(zhàn)(二)—二值化圖像與線性變換

?如圖,將灰度圖二值化處理,其中設(shè)定的值為150和255。該函數(shù)根據(jù)原圖像的像素點(diǎn)分布占比對(duì)圖像根據(jù)設(shè)定的值進(jìn)行二值化。

# 保存圖像
cv.imwrite('pic/apple_gray.jpg', img_gray)
cv.imwrite('pic/apple_bin.jpg', img_bin)

3、通道分離與合并?

?該部分涉及到cv庫(kù)中的split()函數(shù),該函數(shù)用于將多通道圖像分離成單通道圖像,即將三通道的彩色圖分離成三個(gè)單通道的純色圖。

# 分離BGR通道

# r = img[:,:,0]
b, g, r = cv.split(img)
# b.shape
#show(b)
#show(g)
show(r)

python圖像處理實(shí)戰(zhàn)(二)—二值化圖像與線性變換python圖像處理實(shí)戰(zhàn)(二)—二值化圖像與線性變換?python圖像處理實(shí)戰(zhàn)(二)—二值化圖像與線性變換

如圖,從左到右依次為b,g,r對(duì)應(yīng)的單通道圖像。倘若我們將b,g,r重新合并,則可將圖像還原為原彩色圖。

# 合并BGR通道
img_new = cv.merge([b, g, r])
show(img_new)

?python圖像處理實(shí)戰(zhàn)(二)—二值化圖像與線性變換

?此外,還可將原彩色圖中的r,g,b三個(gè)色彩通道按自定義的權(quán)重進(jìn)行重新調(diào)整,將其轉(zhuǎn)化為灰度圖。如下所示:

# rgb轉(zhuǎn)灰度圖
img_gray2 = 0.114*b + 0.587*g + 0.299*r
# img_gray2 = (0.299*r + 0.587*g + 0.114*b).astype(np.uint8)
show(img_gray2)

?python圖像處理實(shí)戰(zhàn)(二)—二值化圖像與線性變換

三、圖像運(yùn)算

該部分主要涉及圖像的加減乘除處理。?

bg = cv.imread('D:\\proclass\\class\\pic\\background.jpg', 0)
ob = cv.imread('D:\\proclass\\class\\pic\\computer500x500.jpg', 0)
show(np.hstack([bg, ob]))

?python圖像處理實(shí)戰(zhàn)(二)—二值化圖像與線性變換

注:將兩個(gè)圖像用hstack()函數(shù)實(shí)現(xiàn)水平方向的拼接,但要求兩個(gè)圖像的維度必須一致。?具體可用shape()函數(shù)對(duì)圖像的維度進(jìn)行檢查。

# 圖像相加
# img_add = cv.add(bg*0.5, ob*0.5)
img_add = bg * 0.5 + ob * 0.5
show(img_add)

python圖像處理實(shí)戰(zhàn)(二)—二值化圖像與線性變換

將兩張圖片按定義的權(quán)重進(jìn)行相加處理,也可采用cv中的add()函數(shù)。 相加主要用于混合圖像和添加噪聲。

# 圖像相減
# img_sub = img_add - bg * 0.5
img_sub = cv.subtract(img_add, bg * 0.5)
show(img_sub)

?python圖像處理實(shí)戰(zhàn)(二)—二值化圖像與線性變換

同理,對(duì)兩張圖像進(jìn)行相減操作。 用來(lái)消除背景或者比較差異。

# 圖像相乘
mask = cv.imread('D:\\proclass\\class\\pic\\mask500x500.jpg', 0)
# mask /= 255
# show(mask)
show(np.hstack([ob, mask]))
img_mul = cv.multiply(ob/1.0, mask/255)
show(img_mul)

?python圖像處理實(shí)戰(zhàn)(二)—二值化圖像與線性變換python圖像處理實(shí)戰(zhàn)(二)—二值化圖像與線性變換

?進(jìn)行相乘處理,用來(lái)遮擋圖像。

# 圖像相除

ob_noise = cv.imread('D:\\proclass\\class\\pic\\hedgehog_noise_500x500.jpg', 0)
show(np.hstack([ob, ob_noise]))
img_div = cv.divide(ob, ob_noise+1)
show(img_div)

?python圖像處理實(shí)戰(zhàn)(二)—二值化圖像與線性變換python圖像處理實(shí)戰(zhàn)(二)—二值化圖像與線性變換

?其中,ob_noise為帶噪聲的圖像,用來(lái)比較兩張圖中的差異。

?四、實(shí)例

第一步,讀入圖片。

bg = cv.imread('pic/petal500x500.jpg')
ob = cv.imread('pic/hedgehog500x500.jpg')
mask = cv.imread('pic/mask500x500.jpg')

show(np.hstack([bg, ob, mask]))

python圖像處理實(shí)戰(zhàn)(二)—二值化圖像與線性變換??

?第二步,用mask對(duì)第二張圖片進(jìn)行遮擋。

ob_select = np.float32(ob/1.0) * np.float32(mask/255.0)
show(np.uint8(ob_select))

python圖像處理實(shí)戰(zhàn)(二)—二值化圖像與線性變換?

?第三步,將mask圖像的周圍區(qū)域進(jìn)行邊緣處理,并用第一張圖像對(duì)黑洞周圍的區(qū)域進(jìn)行填充。

bg_select = np.float32(bg/1.0) * np.float32(1-mask/255.0)
show(np.uint8(bg_select))

?python圖像處理實(shí)戰(zhàn)(二)—二值化圖像與線性變換

?第四步,將第二步處理后的圖像與第三步處理后的圖像按指定權(quán)重相加。從而實(shí)現(xiàn)圖像的混合。

nice = cv.add(ob_select*0.8, bg_select).astype(np.uint8)
show(nice)

?python圖像處理實(shí)戰(zhàn)(二)—二值化圖像與線性變換

?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-465290.html

?

到了這里,關(guān)于python圖像處理實(shí)戰(zhàn)(二)—二值化圖像與線性變換的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 基于opencv的c++圖像處理(圖像二值化)

    基于opencv的c++圖像處理(圖像二值化)

    基于opencv的c++接口,實(shí)現(xiàn)常用的圖像二值化方法,包括了最大類間方差法(OTSU)、固定化閾值以及自適應(yīng)閾值。 該函數(shù)將固定級(jí)別的閾值應(yīng)用于多通道陣列。該函數(shù)通常用于從灰度圖像中獲取雙層(二進(jìn)制)圖像(#compare 也可用于此目的)或用于去除噪聲,即過(guò)濾掉值過(guò)小

    2024年02月07日
    瀏覽(31)
  • 【OpenCV】 基礎(chǔ)入門(二)圖像基礎(chǔ)概念 | 圖像灰度化處理 | 圖像二值化處理

    【OpenCV】 基礎(chǔ)入門(二)圖像基礎(chǔ)概念 | 圖像灰度化處理 | 圖像二值化處理

    ??在計(jì)算機(jī)中用一般用 M x N 的矩陣來(lái)表示一幅尺寸大小為 M x N 的數(shù)字圖像,矩陣元素的值就是該圖像對(duì)應(yīng)位置上的像素值。 ?? 對(duì)于計(jì)算機(jī)本地磁盤中的彩色圖像,單機(jī)鼠標(biāo)右鍵,選擇“屬性”,可以看到一幅圖像的基本信息。 1、灰度圖: ??灰度圖是每個(gè)像素只有一

    2024年04月14日
    瀏覽(27)
  • FPGA|數(shù)字圖像處理實(shí)現(xiàn)口罩識(shí)別——二值化

    FPGA|數(shù)字圖像處理實(shí)現(xiàn)口罩識(shí)別——二值化

    【寫在前面】剛?cè)腴T小菜鳥(niǎo),記錄一下口罩識(shí)別學(xué)習(xí)過(guò)程。參考文件和網(wǎng)址會(huì)在文末注明。有錯(cuò)誤歡迎指出,也歡迎進(jìn)行補(bǔ)充~ 原理圖如下,二值化對(duì)應(yīng)為紅框里的部分 使用的二值化方法是 手動(dòng)指定一個(gè) 閾值 ,通過(guò)閾值來(lái)進(jìn)行二值化處理 。(還有一種方法是一個(gè)自適應(yīng)閾值

    2023年04月11日
    瀏覽(18)
  • OpenCV常用功能——灰度處理和圖像二值化處理

    1.1 cvtColor函數(shù) 函數(shù)原型: 功能 :轉(zhuǎn)換圖像顏色空間。 參數(shù) : src: 輸入圖像。 code: 顏色空間轉(zhuǎn)換代碼??梢匀〕A縞v2.COLOR_BGR2GRAY或cv2.COLOR_RGB2GRAY。 dst: 輸出圖像。 dstCn: 輸出圖像的通道數(shù),如果設(shè)置為0,則跟隨轉(zhuǎn)換代碼自動(dòng)設(shè)置。 內(nèi)置函數(shù)示例代碼: 灰度處理的原理是將

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

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

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

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

    2024年02月13日
    瀏覽(30)
  • 二、FPGA實(shí)時(shí)圖像處理(灰度轉(zhuǎn)換、高斯濾波、二值化和邊緣檢測(cè))

    二、FPGA實(shí)時(shí)圖像處理(灰度轉(zhuǎn)換、高斯濾波、二值化和邊緣檢測(cè))

    基于圖像實(shí)時(shí)采集系統(tǒng)實(shí)現(xiàn)圖像處理 算法:采用精度為7的心理學(xué)公式:Gray = R 0.299 + G 0.587 + B 0.114, Gray = R 38 + G 75 + B 15 7 采用sobel算子進(jìn)行邊緣檢測(cè)。 可以通過(guò)參數(shù)定義修改二值化和邊緣檢測(cè)閾值,以及控制是否進(jìn)行圖像處理和圖像處理類型選擇。 高斯濾波效果不明顯不做演

    2024年02月11日
    瀏覽(28)
  • 圖像二值化處理(全局閾值 自適應(yīng)閾值 手動(dòng)閾值操作以及直方圖畫法)

    圖像二值化處理(全局閾值 自適應(yīng)閾值 手動(dòng)閾值操作以及直方圖畫法)

    圖像二值化就是把讓圖像的像素點(diǎn)只有0和1(只有黑白兩各種顏色,黑是背景,白是前景),關(guān)鍵點(diǎn)是尋找一個(gè)閾值T,使圖像中小于閾值T的像素點(diǎn)變?yōu)?,大于T的像素點(diǎn)變?yōu)?55。下面介紹的就是尋找一個(gè)圖像的閾值T的方法。(主要根據(jù)直方圖) retval:返回的閾值(double類型)

    2024年02月08日
    瀏覽(30)
  • (數(shù)字圖像處理MATLAB+Python)第九章圖像形態(tài)學(xué)運(yùn)算-第三節(jié):二值圖像的形態(tài)學(xué)處理

    (數(shù)字圖像處理MATLAB+Python)第九章圖像形態(tài)學(xué)運(yùn)算-第三節(jié):二值圖像的形態(tài)學(xué)處理

    形態(tài)濾波 :是一種在數(shù)字圖像處理中常用的圖像處理技術(shù),用于改善圖像的質(zhì)量、提取圖像的特定特征或去除圖像中的噪聲。形態(tài)濾波主要基于形態(tài)學(xué)運(yùn)算,通過(guò)結(jié)構(gòu)元素(也稱為模板)對(duì)圖像進(jìn)行局部區(qū)域的操作,從而改變圖像的形狀和結(jié)構(gòu)。選擇不同形狀(如各向同性的

    2024年02月08日
    瀏覽(99)
  • 利用Python實(shí)現(xiàn)圖像的二值化

    利用Python實(shí)現(xiàn)圖像的二值化

    ?? 目錄 1、全局閾值法 1.1主要函數(shù): 1.2全局閾值的代碼實(shí)現(xiàn) 1.3特點(diǎn) 2、自適應(yīng)閾值法 2.1主要函數(shù): 2.2實(shí)現(xiàn)代碼: 2.3特點(diǎn): 3、OTSU二值化(最大類間方差法) 3.1實(shí)現(xiàn)代碼: 3.2特點(diǎn) 4、實(shí)例展示 參考文獻(xiàn):? ????????? ?傳統(tǒng)的機(jī)器視覺(jué)通常包括兩個(gè)步驟:預(yù)處理和物體檢測(cè)

    2024年02月03日
    瀏覽(21)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包