資源簡介
這是一段基于OpenCV的圖像二值化實例代碼,閾值可以通過滑動條來調節,可以觀察不同閾值。具體分析見博客http://blog.csdn.net/primetong/article/details/79211648

代碼片段和文件信息
//-?圖像的二值化?-??
//-?by?陳胃痛?-
//cvThreshold()函數功能:采用Canny方法對圖像進行邊緣檢測
//函數原型:
//void?cvThreshold(?//函數說明:
//const?CvArr*?src //第一個參數表示輸入圖像,必須為單通道灰度圖。
//CvArr*?dst //第二個參數表示輸出的邊緣圖像,為單通道黑白圖。
//double?threshold //第三個參數表示閾值
//double?max_value //第四個參數表示最大值。
//int?threshold_type //第五個參數表示運算方法。
//);
//在OpenCV的imgproc\types_c.h中可以找到運算方法的定義。
///*?Threshold?types?↓*/
//enum
//{ 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???????????*/
// CV_THRESH_MASK?=?7
// CV_THRESH_OTSU?=?8??/*?use?Otsu?algorithm?to?choose?the?optimal?threshold?value;?combine?the?flag?with?one?of?the?above?CV_THRESH_*?values?*/
//??最后一個是自適應算法取閾值(最大類間方差法),這樣前面的第四個參數threshold會無效
//};
#include?
using?namespace?std;
IplImage?*g_pGrayImage?=?NULL;
IplImage?*g_pBinaryImage?=?NULL;
const?char?*pstrWindowsBinarytitle?=?“二值化之后的圖像“;
void?on_trackbar(int?val)
{
//?轉為二值圖??
cvThreshold(g_pGrayImage?g_pBinaryImage?val?255?CV_THRESH_BINARY);
//?顯示二值圖??
cvShowImage(pstrWindowsBinarytitle?g_pBinaryImage);
}
int?main(int?argc?char**?argv)
{
const?char?*pstrWindowsSrctitle?=?“原圖?-?by?Lenna“;
const?char?*pstrWindowsToolBarName?=?“二值化閾值“;
//?從文件中加載原圖??
IplImage?*pSrcImage?=?cvLoadImage(“Lenna.jpg“?CV_LOAD_IMAGE_UNCHANGED);
//?轉為灰度圖??Gray?=?R*0.299?+?G*0.587?+?B*0.114?(通道順序B->G->R)
g_pGrayImage?=?cvCreateImage(cvGetSize(pSrcImage)?IPL_DEPTH_8U?1);
cvCvtColor(pSrcImage?g_pGrayImage?CV_BGR2GRAY);
//?創建二值圖??
g_pBinaryImage?=?cvCreateImage(cvGetSize(g_pGrayImage)?IPL_DEPTH_8U?1);
//?顯示原圖??
cvNamedWindow(pstrWindowsSrctitle?CV_WINDOW_AUTOSIZE);
cvShowImage(pstrWindowsSrctitle?pSrcImage);
//?創建二值圖窗口??
cvNamedWindow(pstrWindowsBinarytitle?CV_WINDOW_AUTOSIZE);
//?滑動條????
int?nThreshold?=?63;
cvCreateTrackbar(pstrWindowsToolBarName?pstrWindowsBinarytitle?&nThreshold?254?on_trackbar);
on_trackbar(63); //初始閾值的設置,初步調試設為63
cvWaitKey(0);
cvDestroyWindow(pstrWindowsSrctitle);
cvDestroyWindow(pstrWindowsBinarytitle);
cvReleaseImage(&pSrcImage);
cvReleaseImage(&g_pGrayImage);
cvReleaseImage(&g_pBinaryImage);
return?0;
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????7353??2017-10-08?21:56??Binarization\Binarization\Binarization.vcxproj
?????文件????????945??2017-10-08?21:56??Binarization\Binarization\Binarization.vcxproj.filters
?????文件??????93609??2017-10-08?20:32??Binarization\Binarization\Lenna.jpg
?????文件???????2725??2018-03-14?20:22??Binarization\Binarization\main.cpp
?????文件???????1124??2017-09-17?14:56??Binarization\Binarization\OpenCV3.3_VS2013_x64_Debug.props
?????文件???????1865??2018-03-14?20:22??Binarization\Binarization\x64\Debug\Binarization.log
?????文件????????175??2018-03-14?20:22??Binarization\Binarization\x64\Debug\Binarization.tlog\Binarization.lastbuildstate
?????文件???????1342??2018-03-14?20:22??Binarization\Binarization\x64\Debug\Binarization.tlog\cl.command.1.tlog
?????文件??????59752??2018-03-14?20:22??Binarization\Binarization\x64\Debug\Binarization.tlog\CL.read.1.tlog
?????文件???????1150??2018-03-14?20:22??Binarization\Binarization\x64\Debug\Binarization.tlog\CL.write.1.tlog
?????文件???????4054??2018-03-14?20:22??Binarization\Binarization\x64\Debug\Binarization.tlog\li
?????文件??????10480??2018-03-14?20:22??Binarization\Binarization\x64\Debug\Binarization.tlog\li
?????文件???????1122??2018-03-14?20:22??Binarization\Binarization\x64\Debug\Binarization.tlog\li
?????文件?????483212??2018-03-14?20:22??Binarization\Binarization\x64\Debug\main.obj
?????文件????1428480??2018-03-14?20:22??Binarization\Binarization\x64\Debug\vc120.idb
?????文件????2019328??2018-03-14?20:22??Binarization\Binarization\x64\Debug\vc120.pdb
?????文件???17563648??2018-03-14?20:34??Binarization\Binarization.sdf
?????文件???????1336??2017-10-08?21:56??Binarization\Binarization.sln
????..A..H.?????24064??2018-03-14?20:34??Binarization\Binarization.v12.suo
?????文件?????105984??2018-03-14?20:22??Binarization\x64\Debug\Binarization.exe
?????文件?????578768??2018-03-14?20:22??Binarization\x64\Debug\Binarization.ilk
?????文件????2886656??2018-03-14?20:22??Binarization\x64\Debug\Binarization.pdb
?????目錄??????????0??2018-03-14?20:22??Binarization\Binarization\x64\Debug\Binarization.tlog
?????目錄??????????0??2018-03-14?20:22??Binarization\Binarization\x64\Debug
?????目錄??????????0??2018-03-14?20:09??Binarization\Binarization\x64
?????目錄??????????0??2018-03-14?20:09??Binarization\x64\Debug
?????目錄??????????0??2018-03-14?20:22??Binarization\Binarization
?????目錄??????????0??2018-03-14?20:09??Binarization\x64
?????目錄??????????0??2018-03-14?20:34??Binarization
-----------?---------??----------?-----??----
............此處省略2個文件信息
評論
共有 條評論