Opencv二值化的詳細介紹

一、 Opencv二值化函數

Opencv二值化是圖像處理中的重要方法之一。它將一副灰度圖像轉換為二值圖像,使每個像素只有兩個可能的值:0(黑色)和255(白色)。Opencv函數cv::threshold()是實現二值化的關鍵函數。

    cv.threshold(src, dst, thresh, maxval, type)

參數說明:src為原始圖像,dst為輸出圖像,thresh是閾值,maxval是輸出圖像中的最大值,type是二值化的類型。

二、 Opencv二值化尖銳

在進行二值化時,有些情況下需要盡量減小圖像的噪點並保留邊緣信息。這種情況下可以使用Otsu二值化方法或者自適應閾值方法如cv::adaptiveThreshold()。

其中,Otsu二值化方法在原始圖像中找到一個閾值,使得各類之間的方差最大。它不僅可以通過cv::threshold()函數實現,還可以通過cv::threshold()函數的cv::THRESH_OTSU選項實現。

而自適應閾值是基於圖像局部區域的灰度值計算閾值。它可以適應不同光照條件下的圖像。其函數定義如下:

    cv.adaptiveThreshold(src, dst, maxValue, adaptiveMethod, thresholdType, blockSize, C)

三、 Opencv二值化邊緣圖形

在邊緣檢測時,可以先對圖像進行二值化處理,以使邊緣更加明顯。其中最常用的二值化方法為自動閾值二值化,比如Otsu二值化方法。如果要查找對象的輪廓,可以使用cv::findContours()函數。

    cv.findContours(binary_image, contours, hierarchy, mode, method, offset)

參數說明:binary_image是二值圖像,contours是向量列表(每個元素存儲一個包含對象邊界點的向量),hierarchy是可選輸出向量,mode是查找輪廓的模式,method是表示輪廓的近似方法,offset是輪廓坐標的偏移量。

四、 Opencv二值化圖像

二值圖像在處理數字、字母或其他形狀的字元時非常有用。如果目標是從圖像中提取這些字元,則需要先將圖像轉換為二進位圖像(也稱為二值圖像)。可以通過setThreshold()函數手動設置閾值。在使用該函數時,需要先將圖像灰度化,然後通過cv::threshold()函數進行二值化處理。

    img_gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
    ret,thresh_img = cv.threshold(img_gray, 100, 255, cv.THRESH_BINARY) 

五、 Opencv二值化演算法

Opencv支持的二值化演算法有三種:全局閾值,自適應閾值和Otsu閾值。其中,全局閾值會針對整幅圖像計算一個固定閾值,而自適應閾值會基於輸入圖像的局部區域計算閾值。Otsu閾值會自動選擇一合適的閾值,以最合適的方式分離背景和前景。

六、 Opencv二值化代碼

下面是一段Opencv二值化的示例代碼:

    img_gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
    ret,thresh_img = cv.threshold(img_gray, 100, 255, cv.THRESH_BINARY) 
    contours, hierarchy = cv.findContours(thresh_img,cv.RETR_TREE,cv.CHAIN_APPROX_SIMPLE)

七、 Opencv二值化閾值怎麼設置

Opencv中二值化的閾值可以通過直方圖和圖像的處理結果來調整。通常,可以在試驗階段手動調整閾值值,直到取得最優結果。然而,設置閾值的關鍵點是要理解二值化背後的原理,明智地選擇合適的方法極其重要。常見的選擇方法有以下兩種:

1)Otsu閾值:根據輸入圖像自動計算合適的閾值

    ret,thresh_img = cv.threshold(img_gray,0,255,cv.THRESH_BINARY+cv.THRESH_OTSU)

2)手動選擇:根據實驗觀察,可以手動選擇最佳閾值

    ret,thresh_img = cv.threshold(img_gray, threshold_value, max_value, threshold_type)

八、 Opencv二值化文字提取

二值化在文字圖像處理中是重要的一步。文字二值化的目標是將文字上的線條更清楚地分離開來。可以使用Opencv的二值化方法進行文字提取。下面是一個文字提取的示例代碼:

    img_gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
    blurred_img = cv.GaussianBlur(img_gray, (5,5), 0)
    threshold_image = cv.adaptiveThreshold(blurred_img,255,cv.ADAPTIVE_THRESH_GAUSSIAN_C,\
                                           cv.THRESH_BINARY,11,2)
    contours, hierarchy = cv.findContours(threshold_image,cv.RETR_TREE,cv.CHAIN_APPROX_SIMPLE)

文字提取需要進行多次處理,比如先進行圖像模糊等預處理操作。最後再進行二值化處理時,可以選擇自適應或Otsu等方法。此外,文字提取的關鍵是檢測和捕獲文字輪廓。這可以使用findContours()函數實現。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/282780.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-22 08:05
下一篇 2024-12-22 08:05

相關推薦

  • 如何在PyCharm中安裝OpenCV?

    本文將從以下幾個方面詳細介紹如何在PyCharm中安裝OpenCV。 一、安裝Python 在安裝OpenCV之前,請確保已經安裝了Python。 如果您還沒有安裝Python,可…

    編程 2025-04-29
  • Python OpenCV 直線檢測

    本文將介紹在Python OpenCV中進行直線檢測的方法,主要涉及到圖像的邊緣檢測、霍夫變換和繪製直線等操作。 一、邊緣檢測 由於直線檢測是從圖像的邊緣開始的,因此必須先找到圖像…

    編程 2025-04-29
  • Opencv 實現讀取 BMP 圖片

    Opencv 是一個基於 C/C++ 語言的開源計算機視覺庫,可以用於圖像處理、特徵識別、目標跟蹤、機器學習等領域。在圖像處理中,讀取 BMP 圖片是常見操作之一。 一、打開 BM…

    編程 2025-04-27
  • opencv滑鼠繪圖

    本文將為您詳細介紹如何使用opencv在原始圖片上進行滑鼠繪圖。 一、準備工作 在開始繪製之前,您需要先準備好以下的工作: 1、安裝opencv庫,可以通過pip install …

    編程 2025-04-27
  • 畫er圖網站詳細介紹

    一、網站介紹 畫er圖是一個畫流程圖的在線工具,提供多種流程圖、思維導圖的繪製模板,方便用戶根據自身需求量身定製。該網站提供免費試用,可同時多人在線協作編輯。 畫er圖通過簡單明了…

    編程 2025-04-25
  • 深入探討OpenCV版本

    OpenCV是一個用於計算機視覺應用程序的開源庫。它是由英特爾公司創建的,現已由Willow Garage管理。OpenCV旨在提供一個易於使用的計算機視覺和機器學習基礎架構,以實…

    編程 2025-04-25
  • OpenCV的全面介紹

    OpenCV是一款強大的開源計算機視覺庫,它包含了各種用於圖像和視頻處理,圖像識別和機器學習的函數,它可以用於開發實時的計算機視覺軟體和系統,特別適用於圖像處理、物體識別、人臉識別…

    編程 2025-04-25
  • Opencv CUDA編譯用法介紹

    本文將從多個方面對Opencv CUDA編譯進行詳細的闡述和解讀。通過以下小標題,我們將詳細介紹如何進行編譯。 一、環境搭建 在使用CUDA進行加速之前,需要進行CUDA的環境搭建…

    編程 2025-04-25
  • 詳解OpenCV高斯濾波

    一、高斯濾波的介紹 OpenCV高斯濾波是一種平滑圖像的處理方法,通常用於去除雜訊、模糊化圖像等。它的原理是利用高斯函數進行加權平均,從而減少雜訊的干擾。 在圖像處理中,雜訊是一種…

    編程 2025-04-25
  • Burp Suite Mac詳細介紹

    Burp Suite Mac是一款全稱Burp Suite Professional for Mac OS X的Mac版網路攻擊測試工具,它能幫助安全測試人員對網路應用進行滲透測試…

    編程 2025-04-25

發表回復

登錄後才能評論