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

歡迎訪問 生活随笔!

生活随笔

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

python

opencv 二值化_Python-OpenCV获取图像轮廓的图像处理方法

發(fā)布時間:2024/7/5 python 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 opencv 二值化_Python-OpenCV获取图像轮廓的图像处理方法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、引言

在《OpenCV閾值處理函數(shù)threshold處理32位彩色圖像的案例》介紹了threshold 函數(shù),但threshold 的圖像閾值處理對于某些光照不均的圖像,這種全局閾值分割的方法并不能得到好的效果。

圖像閾值化操作中,我們更關(guān)心的是從二值化圖像中分離目標(biāo)區(qū)域和背景區(qū)域,僅僅通過固定閾值很難達(dá)到理想的分割效果。在圖片中的灰度是不均勻的,所以通常情況下圖片中不同區(qū)域的閾值是不一樣的。這樣就需要一種方法根據(jù)圖像不同區(qū)域亮度或灰度分布,計算其局部閾值來進(jìn)行閾值處理。這種方法就是自適應(yīng)閾值化圖像處理,實際上這可以稱為局部閾值法,在OpenCV中的adaptiveThreshold就是這種方法。

二、adaptiveThreshold語法介紹

調(diào)用語法:
adaptiveThreshold(src, maxValue, adaptiveMethod, thresholdType, blockSize, C, dst=None)

說明:

  • src:源圖像,必須是8位的灰度圖
  • dst:處理后的目標(biāo)圖像,大小和類型與源圖像相同
  • maxValue:用于指定滿足條件的像素設(shè)定的灰度值
  • adaptiveMethod:使用的自適應(yīng)閾值算法,有2種類型ADAPTIVE_THRESH_MEAN_C算法(局部鄰域塊均值)或ADAPTIVE_THRESH_GAUSSIAN_C(局部鄰域塊高斯加權(quán)和),ADAPTIVE_THRESH_MEAN_C的計算方法是計算出鄰域的平均值再減去第六個參數(shù)C的值,ADAPTIVE_THRESH_GAUSSIAN_C的計算方法是計算出鄰域的高斯均勻值再減去第六個參數(shù)C的值。處理邊界時使用BORDER_REPLICATE | BORDER_ISOLATED模式
  • thresholdType:閾值類型,只能是THRESH_BINARY或THRESH_BINARY_INV二者之一,具體參考上面“圖像閾值處理”的表格
  • blockSize:表示鄰域塊大小,用來計算區(qū)域閾值,一般選擇3、5、7……
  • C:表示常數(shù),它是一個從均勻或加權(quán)均值提取的常數(shù),通常為正數(shù),但也可以是負(fù)數(shù)或零
  • 返回值:處理后的圖像

三、補充說明

  • 亮度較高的圖像區(qū)域的二值化閾值通常會較高,而亮度較低的圖像區(qū)域的二值化閾值則會相適應(yīng)地變小
  • 在灰度圖像中,灰度值變化明顯的區(qū)域往往是物體的輪廓,所以將圖像分成一小塊一小塊的去計算閾值往往會得出圖像的輪廓。因此函數(shù)adaptiveThreshold除了將灰度圖像二值化,也可以進(jìn)行邊緣提取
  • 之所以能進(jìn)行邊緣提取,是因為當(dāng)block很小時,如block_size=3 or 5 or 7時,“自適應(yīng)”的程度很高,即容易出現(xiàn)block里面的像素值都差不多,這樣便無法二值化,而只能在邊緣等梯度大的地方實現(xiàn)二值化,結(jié)果顯得它是邊緣提取函數(shù)
  • 當(dāng)把blockSize設(shè)為比較大的值時,如blockSize=21 or 31 or 41時,adaptiveThreshold便是二值化函數(shù)
  • blockSize必須為大于1的奇數(shù)(原理老猿還沒弄清楚) ,
  • 如果使用平均值方法,平均值mean為180,差值delta為10,maxValue設(shè)為255。那么灰度小于170的像素為0,大于等于170的像素為255,如果是反向二值化,灰度小于170的像素為255,大于等于170的像素為0
  • 四、案例

    import cv2img = cv2.imread(r'F:screenpic1.jpg',cv2.IMREAD_GRAYSCALE)newImg = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY_INV, 3, 5)cv2.imshow('img',img)cv2.imshow('newImg',newImg)cv2.waitKey(60000)

    運行效果:
    源圖:


    下面是分別設(shè)置不同blockSize的結(jié)果圖,左圖塊大小blockSize為31,右圖blockSize為3:


    可以看到blockSize小時,輪廓識別效果明顯,而大時,就是一個二值化圖像。

    關(guān)于老猿的付費專欄

    老猿的付費專欄《使用PyQt開發(fā)圖形界面Python應(yīng)用》專門介紹基于Python的PyQt圖形界面開發(fā)基礎(chǔ)教程,付費專欄《moviepy音視頻開發(fā)專欄》詳細(xì)介紹moviepy音視頻剪輯合成處理的類相關(guān)方法及使用相關(guān)方法進(jìn)行相關(guān)剪輯合成場景的處理,兩個專欄加起來只需要19.9元,都適合有一定Python基礎(chǔ)但無相關(guān)專利知識的小白讀者學(xué)習(xí)。這2個收費專欄都有對應(yīng)免費專欄,只是收費專欄的文章介紹更具體、內(nèi)容更深入、案例更多。

    付費專欄文章目錄:《moviepy音視頻開發(fā)專欄文章目錄》、《使用PyQt開發(fā)圖形界面Python應(yīng)用專欄目錄》。

    關(guān)于Moviepy音視頻開發(fā)的內(nèi)容,請大家參考《Python音視頻剪輯庫MoviePy1.0.3中文教程導(dǎo)覽及可執(zhí)行工具下載》的導(dǎo)覽式介紹。

    對于缺乏Python基礎(chǔ)的同仁,可以通過老猿的免費專欄《專欄:Python基礎(chǔ)教程目錄》從零開始學(xué)習(xí)Python。

    如果有興趣也愿意支持老猿的讀者,歡迎購買付費專欄。

    本文在CSDN的“老猿Python”首發(fā),頭條號、微信公眾號和百家號“老猿Python”轉(zhuǎn)載,由于這些平臺對外部鏈接的限制,文中不能包含外部鏈接。如果是頭條請點擊文章底部最下方的“了解更多”跳轉(zhuǎn)CSDN閱讀原文,如果是微信公眾號請點擊文章底部最下方的“閱讀原文”跳轉(zhuǎn)CSDN閱讀原文,否則請在百度搜索或CSDN搜索中輸入"CSDN老猿Python”加文章標(biāo)題關(guān)鍵字搜尋本文

    總結(jié)

    以上是生活随笔為你收集整理的opencv 二值化_Python-OpenCV获取图像轮廓的图像处理方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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