opencv3& c++物體輪廓識別

開發環境:Ubuntu18.04

注意:路徑表達方式和windows不同

#include <iostream>  

#include <string>  
#include <sstream>    
#include "opencv2/opencv.hpp"
using namespace cv;
using namespace std;  
  
int main()  
{  
    IplImage *srcColor = cvLoadImage("Textures/1.jpg", 1);  
    IplImage *src = cvCreateImage(cvGetSize(srcColor), 8, 1);  
    cvCvtColor(srcColor, src, CV_BGR2GRAY);  
    if(!src)  
    {  
        cout << "No Image Load" << endl;  
    }  
    int i;  
    stringstream ss;  
    string path;  
    string str;  
    IplImage *dst = NULL, *dstColor;  
    char c[256];  
    double result, maxResult= 1000 * 256 *256;  
    IplImage *resultMap = NULL;  
    for (i = 2; i < 9; i ++)  
    {  
        path = "TuPian/";  
        ss.clear();  
        ss << i;  
        ss >> str;  
        str += ".jpg";  
        path += str;  
        ss.clear();  
        ss << path;  
        ss >> c;  
        dstColor = cvLoadImage(c,1);  
        dst = cvCreateImage(cvGetSize(dstColor), 8, 1);  
        cvCvtColor(dstColor, dst, CV_BGR2GRAY);  
        result = cvMatchShapes(src, dst, 1);  
        if(maxResult > result)  
        {  
            resultMap = cvCreateImage(cvGetSize(dstColor), 8, 3);  
            maxResult = result;  
            cvCopy(dstColor, resultMap);  
        }  
        
    }  
    cvNamedWindow("srcColor", 0);  
    cvNamedWindow("resultMap",0);  
    cvShowImage("resultMap", resultMap);  
    cvShowImage("srcColor", srcColor);  
    cvWaitKey(0);  
    cvReleaseImage(&src);  
    cvReleaseImage(&srcColor);  
    cvReleaseImage(&dst);  
    cvReleaseImage(&dstColor);  
    cvReleaseImage(&resultMap);  
    cvDestroyWindow("srcColor");  
    cvDestroyWindow("resultMap");  
    return 0;  
}  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章