圖像二值閾值化、開運算

學習OpenCV 第五章課後練習題5

載入一張風景照片,然後風景不動,在中心位置放一個咖啡杯,再拍攝一張,載入電腦過程中轉換爲8爲灰度圖像。

a:取其差的絕對值並顯示結果=>帶有噪聲的咖啡杯掩碼

b:結果進行二值化閾值操作,超過閾值的設置爲255

c:進行CV_MOP_OPEN操作,進一步清除噪聲

#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/core/core.hpp>
#include <stdio.h>
#include <cstdlib>

using namespace std;
using namespace cv;


int main(int argc, const char * argv[]) {
    
    /*1.載入圖像*/
    const char filename1[] = "/Users/linwang/DownLoads/Pic3.jpg";
    const char filename2[] = "/Users/linwang/DownLoads/Pic4.jpg";
    IplImage * Img1 = cvLoadImage(filename1,CV_LOAD_IMAGE_GRAYSCALE);
    IplImage * Img2 = cvLoadImage(filename2,CV_LOAD_IMAGE_GRAYSCALE);
    
    /*2.縮放圖像*/
    double fScale = 0.1;        //縮放倍數
    CvSize czSize;              //目標圖像尺寸
    
    czSize.width  = Img1->width  * fScale;
    czSize.height = Img1->height * fScale;
    
    IplImage * New_Img1 = cvCreateImage(czSize, Img1->depth , Img1->nChannels);
    cvResize(Img1, New_Img1);
    
    IplImage * New_Img2 = cvCreateImage(czSize, Img2->depth , Img2->nChannels);
    cvResize(Img2, New_Img2);
    
    cout<<New_Img1->width<<" -> "<<New_Img1->height<<endl;
    cout<<New_Img2->width<<" -> "<<New_Img2->height<<endl;
    
    cvNamedWindow("Pic1");
    cvNamedWindow("Pic2");
    cvShowImage("Pic1", New_Img1);
    cvShowImage("Pic2", New_Img2);
    
    /*3.計算img1 和 img2差值的絕對值*/
    IplImage * diff12 = cvCloneImage(New_Img1);
    cvSetZero(diff12);
    cvAbsDiff(New_Img1, New_Img2, diff12);
    cvNamedWindow("ABSDIFF");
    cvShowImage("ABSDIFF", diff12);
    
    /*4.將圖像二值閾值化*/
    IplImage * dst = cvCloneImage(diff12);
    cvSetZero(dst);
    cvThreshold(diff12, dst, 50, 255, CV_THRESH_TRUNC);
    cvShowImage("Binary", dst);
    
    /*5.將圖像進行CV_MOP_OPEN操作*/
    IplImage * Mop_Open = cvCloneImage(dst);
    cvSetZero(Mop_Open);
    cvMorphologyEx(dst, Mop_Open, NULL,NULL, CV_MOP_OPEN, 1);
    cvShowImage("MOP_OPEN", Mop_Open);
    
    cvWaitKey(0);
    return 1;
    
}


發佈了177 篇原創文章 · 獲贊 13 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章