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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

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

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

1.什么是圖像二值化

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

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

二值圖像:只有兩種顏色,黑色和白色,二值化就是把圖像的像素轉變為0或者255,只有這兩個像素值。0白色 1黑色 。0是黑色,255是白色。

2.圖像二值化

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

(3)threshold函數

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

作用:將圖像的每個像素點進行二值化。

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

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

(4)全局閾值 -代碼實現

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("原來", gray)11

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

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法,,全局自適應閾值, 參數0可改為任意數字但不起作用,適用于單個波峰

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)#截斷 大于150的是改為150 小于150的保留

29 print("閾值:%s" %ret)30 cv.imshow("截斷1", binary)31

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

33 print("閾值:%s" %ret)34 cv.imshow("截斷2", binary)35

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

函數threshold()的參數說明:

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

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

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

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

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

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

(5)局部閾值 -代碼實現

1 #局部閾值

2 deflocal_image(image):3 gray =cv.cvtColor(image, cv.COLOR_BGR2GRAY)4 cv.imshow("原來", gray)5 binary1 = cv.adaptiveThreshold(gray, 255, cv.ADAPTIVE_THRESH_MEAN_C, cv.THRESH_BINARY, 25, 10) #blocksize必須為奇數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)自己計算閾值-代碼實現

1 #-*- coding=GBK -*-

2 importcv2 as cv3 importnumpy as np4

5

6 #求出圖像均值作為閾值來二值化

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

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()

參考:

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。