close

接續上一篇<二值化灰階影像 Binarize a gray level image Using OpenCV 2.4.6 with Qt5>

BinarizeQt5OpenCV246目錄夾複製一份

並另存成SplitRGBQt5OpenCV246

開啟專案SplitRGBQt5OpenCV246.pro

在menubar插入文字<檔案>, 接著插入<開啟圖片>,點選<開啟圖片>可以發現其動作函式指標名稱為actionD9

開啟mainwidow.h

在private slots: 新增一個callback function命名為 open()

開啟mainwidow.cpp

註冊動作事件ui->actionD9 與 open() 回呼函式建立關聯

撰寫open()回呼函式內容

移除及其callback function, 在mainwindow.cpp將on_pushButton_clicked()整個刪除

 此外還要刪除其原本的定義,在mainwindow.h

執行測試<SplitRGBQt5OpenCV246_v1>是否修改成功

仿照open()範例, 依樣畫葫蘆新增addRGBNoise()

mainwindow.cpp新增函數addRGBNoise()實作, 並將on_pushButton2_clicked()內容搬到addRGBNoise()內

對應<彩色雜訊>的QAction命名為 actionRGBNoise,並準備接著建立事件關聯至addRGBNoise()

mainwindow.cpp建立事件關聯至addRGBNoise()

執行測試<SplitRGBQt5OpenCV246_v2>是否修改成功

操作動畫:2013 10 15 Qt5如何手動建立Signal Slot

執行測試<SplitRGBQt5OpenCV246_v3>是否修改成功

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------

新增三個頁面, 分別為R頻道, G頻道, B頻道

每頁加入Label元件以便顯示影像

在此輸入<取出RGB>並命名為actionExtractRGB

 mainwindow.h

新增actionExtractRGB()事件處理函式

mainwindow.cpp

連結標籤(ui->actionExtractRGB)與事件處理函式( actionExtractRGB() )

mainwindow.h

新增planes 和輸出結果img_R_out, img_G_out, img_B_out

mainwindow.cpp

// 分別取出RGB
void MainWindow::actionExtractRGB()
{
    ui->tabWidget->setCurrentIndex(6);
    img_R_out.create(img_rgb.rows, img_rgb.cols);
    img_G_out.create(img_rgb.rows, img_rgb.cols);

// Extracting Red(2) channel, which is equal to remove Blue(0) & Green(1) channels by subtracting 255
    cv::split(img_rgb, planes);
    planes[0]-=255;
    planes[1]-=255;
    cv::merge(planes, img_R_out);
    QImage qimg_R = Mat2QImage(img_R_out);           // Mat2QImage
    imshow(ui->label_9, qimg_R);                   // 顯示影像
// Extracting Green channel, which is equal to remove Blue(0) & Red(2) channels by subtracting 255
    cv::split(img_rgb, planes);
    planes[0]-=255;
    planes[2]-=255;
    cv::merge(planes, img_G_out);
    QImage qimg_G = Mat2QImage(img_G_out);           // Mat2QImage
    imshow(ui->label_10, qimg_G);                   // 顯示影像
// Extracting Blue(0) channel, which is equal to remove Green(1) & Red(2) channels by subtracting 255
    cv::split(img_rgb, planes);
    planes[1]-=255;
    planes[2]-=255;
    merge(planes, img_B_out);
    QImage qimg_B = Mat2QImage(img_B_out);           // Mat2QImage
    imshow(ui->label_11, qimg_B);                   // 顯示影像

}

開啟一張影像RGB.jpg

R頻道

G頻道

B頻道

RGB2Gray

二值化門檻240

 download sample code: SplitRGBQt5OpenCV246_v4

arrow
arrow
    文章標籤
    OpenCV Qt5 影像處理
    全站熱搜
    創作者介紹
    創作者 me1237guy 的頭像
    me1237guy

    天天向上

    me1237guy 發表在 痞客邦 留言(0) 人氣()