日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python图像二值化处理_python实现opencv图像二值化

發(fā)布時(shí)間:2023/12/14 python 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python图像二值化处理_python实现opencv图像二值化 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.什么是圖像二值化

彩色圖像: 有blue,green,red三個(gè)通道,取值范圍均為0-255

灰度圖:只有一個(gè)通道0-255,所以一共有256種顏色

二值圖像:只有兩種顏色,黑色和白色,二值化就是把圖像的像素轉(zhuǎn)變?yōu)?或者255,只有這兩個(gè)像素值。0白色 1黑色 。0是黑色,255是白色。

2.圖像二值化

(2)根據(jù)閾值去二值化圖

(3)threshold函數(shù)

原型:threshold(src,thresh,maxval,type,dst=None)。

作用:將圖像的每個(gè)像素點(diǎn)進(jìn)行二值化。

參數(shù):thresh,閾值(最小值)。maxval,二值化的最大取值。

type,二值化類型,一般設(shè)為0,也可以取以下的值:

(4)全局閾值 -代碼實(shí)現(xiàn)

1 #-*- coding=GBK -*-

2 importcv2 as cv3 importnumpy as np4

5

6 #圖像二值化 0白色 1黑色

7 #全局閾值

8 defthreshold_image(image):9 gray =cv.cvtColor(image, cv.COLOR_BGR2GRAY)10 cv.imshow("原來(lái)", gray)11

12 ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU)#大律法,全局自適應(yīng)閾值 參數(shù)0可改為任意數(shù)字但不起作用

13 print("閾值:%s" %ret)14 cv.imshow("OTSU", binary)15

16 ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_TRIANGLE)#TRIANGLE法,,全局自適應(yīng)閾值, 參數(shù)0可改為任意數(shù)字但不起作用,適用于單個(gè)波峰

17 print("閾值:%s" %ret)18 cv.imshow("TRIANGLE", binary)19

20 ret, binary = cv.threshold(gray, 150, 255, cv.THRESH_BINARY)#自定義閾值為150,大于150的是白色 小于的是黑色

21 print("閾值:%s" %ret)22 cv.imshow("自定義", binary)23

24 ret, binary = cv.threshold(gray, 150, 255, cv.THRESH_BINARY_INV)#自定義閾值為150,大于150的是黑色 小于的是白色

25 print("閾值:%s" %ret)26 cv.imshow("自定義反色", binary)27

28 ret, binary = cv.threshold(gray, 150, 255, cv.THRESH_TRUNC)#截?cái)?大于150的是改為150 小于150的保留

29 print("閾值:%s" %ret)30 cv.imshow("截?cái)?", binary)31

32 ret, binary = cv.threshold(gray, 150, 255, cv.THRESH_TOZERO)#截?cái)?小于150的是改為150 大于150的保留

33 print("閾值:%s" %ret)34 cv.imshow("截?cái)?", binary)35

36 src = cv.imread("C://1.jpg")37 threshold_image(src)38 cv.waitKey(0)39 cv.destroyAllWindows()

函數(shù)threshold()的參數(shù)說(shuō)明:

cv.THRESH_BINARY | cv.THRESH_OTSU)#大律法,全局自適應(yīng)閾值 參數(shù)0可改為任意數(shù)字但不起作用

cv.THRESH_BINARY | cv.THRESH_TRIANGLE)#TRIANGLE法,,全局自適應(yīng)閾值, 參數(shù)0可改為任意數(shù)字但不起作用,適用于單個(gè)波峰

cv.THRESH_BINARY)# 自定義閾值為150,大于150的是白色 小于的是黑色

cv.THRESH_BINARY_INV)# 自定義閾值為150,大于150的是黑色 小于的是白色

cv.THRESH_TRUNC)# 截?cái)?大于150的是改為150? 小于150的保留

cv.THRESH_TOZERO)# 截?cái)?小于150的是改為150? 大于150的保留

(5)局部閾值 -代碼實(shí)現(xiàn)

1 #局部閾值

2 deflocal_image(image):3 gray =cv.cvtColor(image, cv.COLOR_BGR2GRAY)4 cv.imshow("原來(lái)", gray)5 binary1 = cv.adaptiveThreshold(gray, 255, cv.ADAPTIVE_THRESH_MEAN_C, cv.THRESH_BINARY, 25, 10) #blocksize必須為奇數(shù)6 cv.imshow("局部1", binary1)7 binary2 = cv.adaptiveThreshold(gray, 255, cv.ADAPTIVE_THRESH_GAUSSIAN_C, cv.THRESH_BINARY, 25, 10)#高斯處理

8 cv.imshow("局部2", binary2)

(6)自己計(jì)算閾值-代碼實(shí)現(xiàn)

1 #-*- coding=GBK -*-

2 importcv2 as cv3 importnumpy as np4

5

6 #求出圖像均值作為閾值來(lái)二值化

7 defcustom_image(image):8 gray =cv.cvtColor(image, cv.COLOR_BGR2GRAY)9 cv.imshow("原來(lái)", gray)10 h, w = gray.shape[:2]11 m = np.reshape(gray, [1, w*h])#化為一維數(shù)組

12 mean = m.sum() / (w*h)13 print("mean:", mean)14 ret, binary = cv.threshold(gray, mean, 255, cv.THRESH_BINARY)15 cv.imshow("二值", binary)16

17

18 src = cv.imread("C://1.jpg")19 custom_image(src)20 cv.waitKey(0)21 cv.destroyAllWindows()

參考:

總結(jié)

以上是生活随笔為你收集整理的python图像二值化处理_python实现opencv图像二值化的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。