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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

opencv 图像阈值分割图像

發(fā)布時間:2025/4/16 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 opencv 图像阈值分割图像 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
  • 最簡單的圖像分割的方法。

  • 應(yīng)用舉例:從一副圖像中利用閾值分割出我們需要的物體部分(當(dāng)然這里的物體可以是一部分或者整體)。這樣的圖像分割方法是基于圖像中物體與背景之間的灰度差異,而且此分割屬于像素級的分割。

  • 為了從一副圖像中提取出我們需要的部分,應(yīng)該用圖像中的每一個像素點(diǎn)的灰度值與選取的閾值進(jìn)行比較,并作出相應(yīng)的判斷。(注意:閾值的選取依賴于具體的問題。即:物體在不同的圖像中有可能會有不同的灰度值。

  • 一旦找到了需要分割的物體的像素點(diǎn),我們可以對這些像素點(diǎn)設(shè)定一些特定的值來表示。(例如:可以將該物體的像素點(diǎn)的灰度值設(shè)定為:‘0’(黑色),其他的像素點(diǎn)的灰度值為:‘255’(白色);當(dāng)然像素點(diǎn)的灰度值可以任意,但最好設(shè)定的兩種顏色對比度較強(qiáng),方便觀察結(jié)果)。

閾值化的類型:

  • OpenCV中提供了閾值(threshold)函數(shù):?threshold?。

  • 這個函數(shù)有5種閾值化類型,在接下來的章節(jié)中將會具體介紹。

  • 為了解釋閾值分割的過程,我們來看一個簡單有關(guān)像素灰度的圖片,該圖如下。該圖中的藍(lán)色水平線代表著具體的一個閾值。

閾值類型1:二進(jìn)制閾值化

  • 該閾值化類型如下式所示:

  • 解釋:在運(yùn)用該閾值類型的時候,先要選定一個特定的閾值量,比如:125,這樣,新的閾值產(chǎn)生規(guī)則可以解釋為大于125的像素點(diǎn)的灰度值設(shè)定為最大值(如8位灰度值最大為255),灰度值小于125的像素點(diǎn)的灰度值設(shè)定為0。

閾值類型2:反二進(jìn)制閾值化

  • 該閾值類型如下式所示:

  • 解釋:該閾值化與二進(jìn)制閾值化相似,先選定一個特定的灰度值作為閾值,不過最后的設(shè)定值相反。(在8位灰度圖中,例如大于閾值的設(shè)定為0,而小于該閾值的設(shè)定為255)。

閾值類型3:截斷閾值化

  • 該閾值化類型如下式所示:

  • 解釋:同樣首先需要選定一個閾值,圖像中大于該閾值的像素點(diǎn)被設(shè)定為該閾值,小于該閾值的保持不變。(例如:閾值選取為125,那小于125的閾值不改變,大于125的灰度值(230)的像素點(diǎn)就設(shè)定為該閾值)。

閾值類型4:閾值化為0

  • 該閾值類型如下式所示:

  • 解釋:先選定一個閾值,然后對圖像做如下處理:1 像素點(diǎn)的灰度值大于該閾值的不進(jìn)行任何改變;2 像素點(diǎn)的灰度值小于該閾值的,其灰度值全部變?yōu)?。

閾值類型5:反閾值化為0

  • 該閾值類型如下式所示:

  • 解釋:原理類似于0閾值,但是在對圖像做處理的時候相反,即:像素點(diǎn)的灰度值小于該閾值的不進(jìn)行任何改變,而大于該閾值的部分,其灰度值全部變?yōu)?。

代碼示范:

簡單的代碼如下。同樣也可以在網(wǎng)站中?下載?以下代碼。

#include "opencv2/imgproc/imgproc.hpp" #include "opencv2/highgui/highgui.hpp" #include <stdlib.h> #include <stdio.h>using namespace cv;/// 全局變量定義及賦值int threshold_value = 0; int threshold_type = 3;; int const max_value = 255; int const max_type = 4; int const max_BINARY_value = 255;Mat src, src_gray, dst; char* window_name = "Threshold Demo";char* trackbar_type = "Type: \n 0: Binary \n 1: Binary Inverted \n 2: Truncate \n 3: To Zero \n 4: To Zero Inverted"; char* trackbar_value = "Value";/// 自定義函數(shù)聲明 void Threshold_Demo( int, void* );/** * @主函數(shù) */ int main( int argc, char** argv ) {/// 讀取一副圖片,不改變圖片本身的顏色類型(該讀取方式為DOS運(yùn)行模式)src = imread( argv[1], 1 );/// 將圖片轉(zhuǎn)換成灰度圖片cvtColor( src, src_gray, CV_RGB2GRAY );/// 創(chuàng)建一個窗口顯示圖片namedWindow( window_name, CV_WINDOW_AUTOSIZE );/// 創(chuàng)建滑動條來控制閾值createTrackbar( trackbar_type,window_name, &threshold_type,max_type, Threshold_Demo );createTrackbar( trackbar_value,window_name, &threshold_value,max_value, Threshold_Demo );/// 初始化自定義的閾值函數(shù)Threshold_Demo( 0, 0 );/// 等待用戶按鍵。如果是ESC健則退出等待過程。while(true){int c;c = waitKey( 20 );if( (char)c == 27 ){ break; }}}/** * @自定義的閾值函數(shù) */ void Threshold_Demo( int, void* ) {/* 0: 二進(jìn)制閾值 1: 反二進(jìn)制閾值 2: 截斷閾值 3: 0閾值 4: 反0閾值 */threshold( src_gray, dst, threshold_value, max_BINARY_value,threshold_type );imshow( window_name, dst ); }

解釋:

  • 先看一下整個程序的結(jié)構(gòu):

    • 先讀取一副圖片,如果是圖片顏色類型是RGB3色類型,則轉(zhuǎn)換成灰度類型的圖像。轉(zhuǎn)換顏色類型可以運(yùn)用OpenCV中的 cvtColor<> 函數(shù)。

      src = imread( argv[1], 1 );/// 顏色類型從RGB 轉(zhuǎn)換成灰度 cvtColor( src, src_gray, CV_RGB2GRAY );
    • 然后創(chuàng)建一個窗口來顯示該圖片可以檢驗轉(zhuǎn)換結(jié)果

      namedWindow( window_name, CV_WINDOW_AUTOSIZE );
    • 接著該程序創(chuàng)建兩個滾動條來等待用戶的輸入:

      • 第一個滾動條作用:選擇閾值類型:二進(jìn)制,反二進(jìn)制,截斷,0,反0。
      • 第二個滾動條作用:選擇閾值的大小。
      createTrackbar( trackbar_type,window_name, &threshold_type,max_type, Threshold_Demo );createTrackbar( trackbar_value,window_name, &threshold_value,max_value, Threshold_Demo );
    • 在這里等到用戶拖動滾動條來輸入閾值類型以及閾值的大小,或者是用戶鍵入ESC健退出程序。

    • 無論何時拖動滾動條,用戶自定義的閾值函數(shù)都將會被調(diào)用。

      /** * @自定義的閾值函數(shù) */ void Threshold_Demo( int, void* ) {/* 0: 二進(jìn)制閾值 1: 反二進(jìn)制閾值 2: 截斷閾值 3: 0閾值 4: 反0閾值 */threshold( src_gray, dst, threshold_value, max_BINARY_value,threshold_type );imshow( window_name, dst ); }

      就像你看到的那樣,在這樣的過程中,函數(shù) threshold<> 會接受到5個參數(shù):

      • src_gray: 輸入的灰度圖像的地址。
      • dst: 輸出圖像的地址。
      • threshold_value: 進(jìn)行閾值操作時閾值的大小。
      • max_BINARY_value: 設(shè)定的最大灰度值(該參數(shù)運(yùn)用在二進(jìn)制與反二進(jìn)制閾值操作中)。
      • threshold_type: 閾值的類型。從上面提到的5種中選擇出的結(jié)果。
  • 結(jié)果:

  • 程序編譯過后,從正確的路徑中讀取一張圖片。例如,該輸入圖片如下所示:

  • 首先,閾值類型選擇為反二進(jìn)制閾值類型。我們希望灰度值大于閾值的變暗,即這一部分像素的灰度值設(shè)定為0。從下圖中可以很清楚的看到這樣的變化。(在原圖中,狗的嘴和眼睛部分比圖像中的其他部分要亮,在結(jié)果圖中可以看到由于反二進(jìn)制閾值分割,這兩部分變的比其他圖像的都要暗。原理具體參見本節(jié)中反二進(jìn)制閾值部分解釋)

  • 現(xiàn)在,閾值的類型選擇為0閾值。在這種情況下,我們希望那些在圖像中最黑的像素點(diǎn)徹底的變成黑色,而其他大于閾值的像素保持原來的面貌。其結(jié)果如下圖所示:

  • 《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

    總結(jié)

    以上是生活随笔為你收集整理的opencv 图像阈值分割图像的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

    主站蜘蛛池模板: 久久香蕉国产 | 9999视频 | 网站久久久| 久久久看片 | 老熟妇高潮一区二区三区 | 久久av综合网 | 久久久香蕉视频 | 国产精品一区在线 | 日本猛少妇色xxxxx猛叫 | 特级西西人体444www | 激情自拍偷拍 | 国产成人无码精品久久二区三 | 久久久人妻无码一区二区 | 中文字幕一区二区三区人妻四季 | 国产在线一区视频 | 亚洲天堂一级片 | 伊人ab| 国产精品一区二区精品 | 欧美性猛交xxxx黑人猛交 | 欧美性爱精品一区 | 2021亚洲天堂 | 日本理论片午伦夜理片在线观看 | 五月天视频网站 | 奇米成人 | 夜久久 | 一级全黄男女免费大片 | 久久1024| 日韩一二三区 | 日韩 欧美 中文 | 99草在线视频 | 国产精品一区二区三 | 黄色大片网站在线观看 | 久久网伊人| 亚洲综合国产 | 欧洲在线视频 | 理论片琪琪午夜电影 | 肉嫁高柳家在线看 | 五月天婷婷影院 | 久久男人网 | 不卡的免费av | 少妇特黄一区二区 | 美女久久久 | proumb性欧美在线观看 | 日韩免费影院 | 丰满大肥婆肥奶大屁股 | 亚洲免费视频一区二区 | 一区二区三区在线播放视频 | 成年人网站免费观看 | 精品免费国产一区二区三区 | 三级欧美韩日大片在线看 | 精品影视一区二区 | 日韩天天干 | 麻豆精品a∨在线观看 | 日韩少妇中文字幕 | 日韩精品在线视频 | 黄网站视频在线观看 | av永久免费观看 | 18av在线播放| 亚洲欧美另类一区 | 日韩h在线| a级黄色片免费看 | 欧美性受xxxx黑人 | 国产乱强伦一区二区三区 | 欧美韩一区 | 亚洲天堂视频在线 | 影音先锋在线看 | 日本美女黄网站 | 色屁屁草草影院ccyycom | 自拍偷拍小视频 | 波多野结衣视频一区二区 | 国产日韩视频一区 | 亚洲色图制服诱惑 | 成人在线观看国产 | 日韩国产欧美一区 | 欧美高清精品 | 天堂综合网 | 国产视频一区二区在线观看 | 黑人添美女bbb添高潮了 | 亚洲欧美一区二区在线观看 | 国产裸体视频网站 | 性久久 | 在线视频精品一区 | 亚洲午夜无码久久久久 | 国产精品视频久久 | 日韩精品极品视频在线观看免费 | 在线免费一区二区 | 干日本少妇首页 | 操极品女神 | 福利电影在线播放 | 一区二区不卡在线 | 美日韩一二三区 | 婷婷激情小说网 | 中文字幕亚洲一区二区三区 | 亚洲.www| 五月激情片 | 亚洲精品国产福利 | 免费观看a毛片 | 婷色| 色在线播放 |