接續上一篇<輪廓搜尋 Finding contours using OpenCV2.4.6 with visual studio 2010>
這次將整合搜尋輪廓find contours範例至Image Viewer平台, 開啟上一篇的範例程式<find contour VS2010 OpenCV2.4.6>
自動載入C:\OpenCV-2.4.6\opencv\include\opencv2\imgproc\types_c.h其中一段敘述如下
/* Contour retrieval modes */
enum
{
CV_RETR_EXTERNAL=0,
CV_RETR_LIST=1,
CV_RETR_CCOMP=2,
CV_RETR_TREE=3,
CV_RETR_FLOODFILL=4
};
/* Contour approximation methods */
enum
{
CV_CHAIN_CODE=0,
CV_CHAIN_APPROX_NONE=1,
CV_CHAIN_APPROX_SIMPLE=2,
CV_CHAIN_APPROX_TC89_L1=3,
CV_CHAIN_APPROX_TC89_KCOS=4,
CV_LINK_RUNS=5
};
首先, 拉一個QComboBox, 依序加入輪廓擷取方法(Contour retrieval modes)的選項
仿照上面步驟, 再拉一個QComboBox, 接著依序加入輪廓近似方法(Contour approximation methods)的選項
連接horizontalSlider的觸發事件valueChanged
connect(ui->horizontalSlider_4,SIGNAL(valueChanged(int)),ui->lcdNumber_4,SLOT(display(int)));//搜尋輪廓(findcontours)即時顯示門檻值1
connect(ui->horizontalSlider_5,SIGNAL(valueChanged(int)),ui->lcdNumber_5,SLOT(display(int)));//搜尋輪廓(findcontours)即時顯示門檻值2
connect(ui->actionFindContours,SIGNAL(triggered()),this,SLOT(actionFindContours()));//搜尋輪廓(findcontours)
<靜態處理>插入<搜尋輪廓>
mainwindow.h加入actionFindContours()函式宣告
mainwindow.cpp定義對應的實作
----------------------------------------------------------------------------------------------------
在mainwindow.h新增成員變數
/*搜尋輪廓*/
cv::Mat1b img_Canny; //影像邊緣偵測Canny
cv::Mat3b img_contour; //搜尋輪廓
在imageutility.h新增成員函式
在imageutility.cpp實作成員函式myFindContours
在imageutility.cpp
當按下Canny threshold 1 或 Canny threshold 2, 會重新計算一次<搜尋輪廓>
跳到<搜尋輪廓>副程式
actionFindContours()
Youtube測試操作
留言列表