Opencv图像二值化操作
生活随笔
收集整理的這篇文章主要介紹了
Opencv图像二值化操作
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
圖像二值化就是根據閾值將數字圖像分為兩部分:大于閾值的像素集合和小于閾值的像素集合。二值化操作分為全局二值化和局部二值化:
- 全局二值化:是針對整幅數字圖像來說的,設置一個閾值,讓整幅數字圖像的所有像素值與該閾值進行比較;
- 局部二值化:是針對一幅數字圖像的某一部分(區域)來說的,設置一個閾值,讓該區域的所有像素值與該閾值進行比較,因此,當一幅數字圖像上的不同部分具有不同亮度時,在對其進行二值化操作時,需要采用自適應閾值,讓不同的區域取不同的閾值;
在Opencv中對上述兩種二值化操作均提供了對應的函數。
全局二值化
import cv2cv2.threshold(src,threshold,maxValue,Methods)參數
- src:灰度圖;
- threshold:用來對像素值進行分類的閾值;
- maxValue:當像素值高于(有時是小于)閾值時應該被賦予的新的像素值;
- Methods:二值化方法。
二值化方法具體包括如下五種:
- cv2.THRESH_BINARY:大于閾值的像素點的灰度值設定為 maxValue(如 8 位灰度值最大為 255),灰度值小于閾值的像素點的灰度值設定為 0。
- cv2.THRESH_BINARY_INV:大于閾值的像素點的灰度值設定為 0,而小于該閾值的設定為 maxValue。
- cv2.THRESH_TRUNC:像素點的灰度值小于閾值不改變,大于閾值的灰度值的像素點就設定為該閾值。
- cv2.THRESH_TOZERO:像素點的灰度值小于該閾值的不進行任何改變,而大于該閾值的部分,其灰度值全部變為 0。
- cv2.THRESH_TOZERO_INV:像素點的灰度值大于該閾值的不進行任何改變,像素點的灰度值小于該閾值的,其灰度值全部變為 0。
局部二值化
import cv2cv2.adaptiveThreshold(src, maxValue, adaptive_method, threshold_type, block_size, param1)參數
- src:灰度圖;
- maxValue:當像素值高于(有時是小于)閾值時應該被賦予的新的像素值。
- adaptive_method:自適應閾值計算方法:CV_ADAPTIVE_THRESH_MEAN_C 和 CV_ADAPTIVE_THRESH_GAUSSIAN_C;
- threshold_type:二值化方法:CV_THRESH_BINARY 和CV_THRESH_BINARY_INV;
- block_size:用來計算閾值的像素鄰域大小
- param1:與自適應閾值計算方法有關的參數,當自適應閾值計算方法為 CV_ADAPTIVE_THRESH_MEAN_C,先求出塊中的均值,再減掉param1;
當自適應閾值計算方法為 CV_ADAPTIVE_THRESH_GAUSSIAN_C ,先求出塊中的加權和(gaussian), 再減掉 param1。
總結
以上是生活随笔為你收集整理的Opencv图像二值化操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2048【模拟】
- 下一篇: libyuv NV12裁剪