您好,登錄后才能下訂單哦!
怎么在python中處理圖像二值化?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
Python主要應用于:1、Web開發;2、數據科學研究;3、網絡爬蟲;4、嵌入式應用開發;5、游戲開發;6、桌面應用開發。
一、圖像二值化
圖像二值化是指將圖像上像素點的灰度值設定為0或255,即整個圖像呈現明顯的黑白效果的過程。
二、python圖像二值化處理
1.opencv簡單閾值cv2.threshold
2.opencv自適應閾值cv2.adaptiveThreshold
有兩種方法可用于計算自適應閾值:mean_c和guassian_c
3.Otsu's二值化
三、示例:
import cv2 import numpy as np from matplotlib import pyplot as plt img = cv2.imread('scratch.png', 0) # global thresholding ret1, th2 = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY) # Otsu's thresholding th3 = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 11, 2) # Otsu's thresholding # 閾值一定要設為 0 ! ret3, th4 = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU) # plot all the images and their histograms images = [img, 0, th2, img, 0, th3, img, 0, th4] titles = [ 'Original Noisy Image', 'Histogram', 'Global Thresholding (v=127)', 'Original Noisy Image', 'Histogram', "Adaptive Thresholding", 'Original Noisy Image', 'Histogram', "Otsu's Thresholding" ] # 這里使用了 pyplot 中畫直方圖的方法, plt.hist, 要注意的是它的參數是一維數組 # 所以這里使用了( numpy ) ravel 方法,將多維數組轉換成一維,也可以使用 flatten 方法 # ndarray.flat 1-D iterator over an array. # ndarray.flatten 1-D array copy of the elements of an array in row-major order. for i in range(3): plt.subplot(3, 3, i * 3 + 1), plt.imshow(images[i * 3], 'gray') plt.title(titles[i * 3]), plt.xticks([]), plt.yticks([]) plt.subplot(3, 3, i * 3 + 2), plt.hist(images[i * 3].ravel(), 256) plt.title(titles[i * 3 + 1]), plt.xticks([]), plt.yticks([]) plt.subplot(3, 3, i * 3 + 3), plt.imshow(images[i * 3 + 2], 'gray') plt.title(titles[i * 3 + 2]), plt.xticks([]), plt.yticks([]) plt.show()
看完上述內容,你們掌握怎么在python中處理圖像二值化的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。