OpenCV 中腐蝕和膨脹

用手機拍攝同一場景的兩張照片,拍攝位置略有不同。

分別進行如下操作:

1、src1 減去 scr2求絕對值=>diff12

2、對diff12先進行腐蝕,在進行膨脹操作;

3、對diff12先進行膨脹,在進行腐蝕操作;

#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/Pic1.jpg";
    const char filename2[] = "/Users/linwang/DownLoads/Pic2.jpg";
    IplImage * Img1 = cvLoadImage(filename1);
    IplImage * Img2 = cvLoadImage(filename2);
    
    /*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對DIFF先進行腐蝕,然後進行膨脹,結果寫爲cleandiff*/
    IplImage * cleandiff = cvCloneImage(diff12);
    cvSetZero(cleandiff);
    cvErode(diff12, cleandiff);  //腐蝕操作
    cvDilate(cleandiff, cleandiff);  //膨脹操作,支持in-place
    
    cvNamedWindow("cleandiff");
    cvShowImage("cleandiff", cleandiff);
    
    /*對DIFF先進行膨脹,然後進行腐蝕,結果寫爲dirtydiff*/
    IplImage * dirtydiff = cvCloneImage(diff12);
    cvDilate(diff12, dirtydiff);
    cvErode(dirtydiff, dirtydiff);
    cvNamedWindow("dirtydiff");
    cvShowImage("dirtydiff", dirtydiff);
    
    cvWaitKey(0);
    return 1;
    
}





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