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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OpenCV学习笔记(十一):阈值化:threshold(),adaptivethreshold()

發(fā)布時間:2024/7/23 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenCV学习笔记(十一):阈值化:threshold(),adaptivethreshold() 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

OpenCV學習筆記(十一):閾值化:threshold(),adaptivethreshold()

一、定義:

1)固定閾值操作

double threshold( InputArray src, // 輸入圖像,單通道 OutputArray dst, // 輸出圖像 double thresh, // 閾值的具體值 double maxval, // 最大值,生成二值圖時用到 int type); // 閾值類型// 常用的兩種閾值化類型// THRESH_BINARY = 0, 閾值化處理生成二值圖像// THRESH_BINARY_INV = 1, 閾值化處理并反轉生成二值圖 ==閾值類型:== 0 = THRESH_BINARY二進制閾值化: 將灰度值大于thresh的設置為maxval,不大于thresh設置為01 = THRESH_BINARY_INV反二進制閾值化: 將灰度值大于thresh的設置為0,不大于thresh設置為maxval。2 = THRESH_TRUNC截斷閾值化: 將灰度值大于thresh的設置為threshold,不大于thresh的灰度值不變。3 = THRESH_TOZERO閾值化為0: 將灰度值大于thresh的不變,超過閾值置為04 = THRESH_TOZERO_INV反閾值化為0: 將灰度值大于thresh的不變,低于閾值置為0。THRESH_MASKTHRESH_OTSU 使用Otsu算法選擇最優(yōu)閾值,使這個閾值可以將前景色和背景色盡可能分開。 THRESH_TRIANGLE 使用三角形算法選擇最優(yōu)閾值

2)自適應閾值化操作

void adaptiveThreshold( InoutArray src, // 源圖像數(shù)組 OutputArray dst, // 輸出圖像組 double maxValue, // 最大值,生成二值圖時用到 int adaptiveMethod, // 自適應閾值算法選擇 ADAPTIVE_THRESH_MEAN_C或ADAPTIVE_THRESH_GAUSSIAN_C; int thresholdType, // 閾值類型THRESH_BINARY或THRESH_BINARY_INV int blockSize, // 鄰域塊大小,用來計算區(qū)域閾值,一般選擇3、5、7……; double C // 它是一個從均勻或加權均值提取的常數(shù),可以是負數(shù) )==自適應閾值算法== ADAPTIVE_THRESH_MEAN_C 的計算方法是 計算出鄰域的平均值再減去第七個參數(shù)double C的值ADAPTIVE_THRESH_GAUSSIAN_C 的計算方法是 計算出鄰域的高斯均勻值再減去第七個參數(shù)double C的值

二、固定閾值threshold() 代碼示例:

1)主函數(shù)

#include <opencv2/opencv.hpp>using namespace cv; using namespace std;int g_nThresholdValue1 = 124,g_nThresholdValue2=175; int g_nThresholdType = 0; // 閾值類型 標識 Mat g_srcImage,g_grayImage,g_dstImage,g_dstImage1,g_dstImage2;int main() {// 顯示歡迎和幫助文字ShowHelpText( );// 1、讀入源圖片g_srcImage = imread("F:/C++/2. OPENCV 3.1.0/TEST/pellets.png");if(!g_srcImage.data ) { printf("讀取圖片錯誤,請確定目錄下是否有imread函數(shù)指定的圖片存在~! \n"); return false; }imshow("原始圖",g_srcImage);// 2、存留一份原圖的灰度圖cvtColor( g_srcImage, g_grayImage, COLOR_RGB2GRAY );// 3、創(chuàng)建窗口并顯示原始圖namedWindow( "【程序窗口】", WINDOW_AUTOSIZE );// 4、創(chuàng)建滑動條來控制閾值createTrackbar( "模式", "【程序窗口】", &g_nThresholdType,4, on_Threshold );createTrackbar( "min閾值1","【程序窗口】", &g_nThresholdValue1,255, on_Threshold );createTrackbar( "max閾值2","【程序窗口】", &g_nThresholdValue2,255, on_Threshold );// 5、初始化自定義的閾值回調函數(shù)on_Threshold( 0, 0 );// 6、輪詢等待用戶按鍵,如果ESC鍵按下則退出程序while(1){int key;key = waitKey( 20 );if( (char)key == 27 ){ break; }}return 0; }

2)獲取區(qū)間像素點總數(shù):

int getWhitePixel(Mat& img) {int area=0;for(int i=0 ; i<img.rows ; i++)for(int j=0 ; j<img.cols ; j++)if(img.at<uchar>(i,j)==255)area ++;return area;// int area=0; // int rowNumber = img.rows; //行數(shù) // int colNumber = img.cols*img.channels(); //列數(shù) x 通道數(shù)=每一行元素的個數(shù) // //雙重循環(huán),遍歷所有的像素值 // for (int i = 0; i < rowNumber; i++) //行循環(huán) // { // uchar *data = img.ptr<uchar>(i); //獲取第i行的首地址 // for (int j = 0; j < colNumber; j++) // if(data[j] ==255) // area ++; // } // return area; }

3)區(qū)間閾值實現(xiàn)函數(shù):

void on_Threshold( int, void* ) {//調用閾值函數(shù)//CV_THRESH_BINARY = 0, /**< value = value > threshold ? max_value : 0 *///CV_THRESH_BINARY_INV = 1, /**< value = value > threshold ? 0 : max_value *///CV_THRESH_TRUNC = 2, /**< value = value > threshold ? threshold : value *///CV_THRESH_TOZERO = 3, /**< value = value > threshold ? value : 0 *///CV_THRESH_TOZERO_INV = 4, /**< value = value > threshold ? 0 : value */threshold(g_grayImage,g_dstImage1,g_nThresholdValue1,255,g_nThresholdType); // CV_THRESH_BINARYimshow( "threshold1", g_dstImage1 );threshold(g_grayImage,g_dstImage2,g_nThresholdValue2,255,g_nThresholdType);imshow( "threshold2", g_dstImage2 );// 兩圖相減 g_dstImage1-g_dstImage2=g_dstImageaddWeighted(g_dstImage1,1.0,g_dstImage2,-1,0,g_dstImage);// 顯示區(qū)間像素點數(shù)int area = getWhitePixel(g_dstImage);printf("\n 區(qū)間面積area =%d pixel",area);//更新效果圖imshow( "【程序窗口】", g_dstImage ); } static void ShowHelpText() {//輸出一些幫助信息printf( "\n\t歡迎來到【基本閾值操作】示例程序~\n\n");printf( "\n\t按鍵操作說明: \n\n""\t\t鍵盤按鍵【ESC】- 退出程序\n""\t\t滾動條模式0- 二進制閾值\n""\t\t滾動條模式1- 反二進制閾值\n""\t\t滾動條模式2- 截斷閾值\n""\t\t滾動條模式3- 反閾值化為0\n""\t\t滾動條模式4- 閾值化為0\n" ); }

結果:


在這里插入圖片描述
Halcon對比:

二、固定閾值threshold() 代碼示例:

1)主函數(shù)

#include <opencv2/opencv.hpp>using namespace cv; using namespace std;Mat g_srcImage, g_grayImage,g_matAdaptive; int g_nadaptiveMethod = ADAPTIVE_THRESH_MEAN_C; int g_C = 5; int g_blockSize=1;int main() {// 1、讀入源圖片g_srcImage = imread("F:/C++/2. OPENCV 3.1.0/TEST/pellets.png");if(!g_srcImage.data ) { printf("讀取圖片錯誤,請確定目錄下是否有imread函數(shù)指定的圖片存在~! \n"); return false; }imshow("原始圖",g_srcImage);// 2、存留一份原圖的灰度圖cvtColor( g_srcImage, g_grayImage, COLOR_RGB2GRAY );// 3、創(chuàng)建窗口并顯示原始圖namedWindow( "【自適應閾值分割】" , WINDOW_AUTOSIZE );// 4、創(chuàng)建滑動條來控制閾值createTrackbar( "閾值算法", "【自適應閾值分割】" , &g_nadaptiveMethod,1, on_Threshold );createTrackbar( "領域尺寸","【自適應閾值分割】" , &g_blockSize,9, on_Threshold );createTrackbar( "常數(shù) C","【自適應閾值分割】" , &g_C,255, on_Threshold );// 5、初始化自定義的閾值回調函數(shù)on_Threshold( 0, 0 );// 6、輪詢等待用戶按鍵,如果ESC鍵按下則退出程序while(1){int key;key = waitKey( 20 );if( (char)key == 27 ){ break; }}return 0; } void on_Threshold( int, void* ) { // 自適應閾值分割adaptiveThreshold(g_grayImage, g_matAdaptive, 255, g_nadaptiveMethod, THRESH_BINARY_INV, 2*g_blockSize+1, g_C);// 更新效果圖imshow( "【自適應閾值分割】" , g_matAdaptive ); }

結果:


創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結

以上是生活随笔為你收集整理的OpenCV学习笔记(十一):阈值化:threshold(),adaptivethreshold()的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 日韩欧美小视频 | 99精品影视| 色爱综合 | 国产+高潮+白浆+无码 | 国产伦一区二区三区 | 自拍偷拍激情视频 | 亚洲AV无码一区二区三区性 | 亚洲一区成人在线 | 精品动漫一区二区三区在线观看 | 一区二区不卡 | 亚洲一区二区三区成人 | 成人av电影在线播放 | 先锋资源中文字幕 | 成年人视频在线观看免费 | 性av网| 亚洲精品性 | 丁香花高清视频完整电影 | 秋霞网一区二区三区 | 欧美大色 | 国产偷拍一区二区三区 | 热99在线观看 | 综合av一区| 天天插综合网 | 免费av播放 | 日本啊啊视频 | 国产8区 | 日本高清中文字幕 | 六月色| 黄色一级影片 | 深夜精品视频 | 禁断介护老人中文字幕 | 在线视频观看你懂得 | 日本福利视频一区 | 少妇熟女一区二区 | 在线观看国产一区 | 久久国内精品视频 | 人人草人人干 | 蜜桃网站 | 美女扒逼 | 中文字幕在线导航 | 国产不卡av在线 | 男女爽爽 | 影音先锋在线看片资源 | 国产精品乱码一区二区视频 | 无限资源日本好片 | 特级西西人体 | 好色先生视频污 | 久久精品色 | 欧美日韩精 | 激情午夜av | 自拍偷拍21p | 在线观看av一区二区 | 国产欧美精品在线观看 | 羞羞动态图 | 日韩毛片一级 | 亚洲影院一区二区三区 | 亚洲AV综合色区无码国产播放 | 亚洲激情久久 | 日本三级中文字幕在线观看 | 青青操视频在线 | 深夜福利视频在线观看 | 8090理论片午夜理伦片 | 7777久久亚洲中文字幕 | 国产一区二区av | 大香蕉视频一区二区 | 成人免费片库 | 深喉口爆一区二区三区 | 91国产一区| 久久成年网 | av导航站 | 成人精品网 | 人妻少妇一区二区 | 日本肉体xxxx裸体xxx免费 | 韩国日本在线 | 91九色国产视频 | av黄色在线看 | 欧美视频免费看欧美视频 | 中文字幕在线观看视频免费 | 亚洲色综合 | 欧美三级在线视频 | 先锋影音av资源在线 | 精品一区二区久久久 | 涩涩视频在线看 | 国产一区二区三区欧美 | 黄色片99| 久久久国产免费 | 9i看片成人免费看片 | 激情综合站| 日本欧美国产一区二区三区 | 999久久久国产 | 中文字幕免费高清网站 | 日xxxx| 亚洲天堂网一区 | 奇米婷婷 | 国产一区二区三区精品在线观看 | 欧美专区综合 | 成人一级影片 | 黑人多p混交群体交乱 | 丁香八月婷婷 |