2014-01-15 1 views
0
#include "opencv2/highgui/highgui.hpp" 
#include "opencv2/imgproc/imgproc.hpp" 
#include <iostream> 
#include <stdio.h> 
#include <stdlib.h> 

using namespace cv; 
using namespace std; 

int main() 
{ 
    Mat image=cvLoadImage("C:/Users/Administrator/Desktop/Desert.jpg",1); 
    Mat imagegray, output, imageresult;; 

    int thresh=150; 

    cvtColor(image, imagegray,CV_BGR2GRAY); 

    vector<vector<Point>>contours; 
    vector<Vec4i>hierarchy; 

    Canny(imagegray, imageresult,thresh, thresh*2); 

    findContours(imageresult,contours,hierarchy,CV_RETR_TREE,CV_CHAIN_APPROX_SIMPLE,cvPoint(0,0)); 

    Mat drawing=Mat::zeros(imagegray.size(),CV_8UC3); 
    approxPolyDP(contours,imageresult,100,true); 

    namedWindow("Display",1); 
    imshow("Display",imageresult); 
    waitKey(0); 
    return(0); 
} 

를 실행할 수 없습니다. 중단 점을 사용하여 실행하면이 함수가 실행 된 후에 프로그램이 실행되지 않습니다. 여기에 주어진 코드의 문제점은 무엇입니까?는</p> </blockquote> <p>기능이 작동하지 않는</p> <blockquote> <p>approxPolyDP 상기 주어진 코드()에서 approxPolyDP()

답변

2

다음 코드()

Mat image=cvLoadImage("face1.jpg",1); 
Mat imagegray, output, imageresult;; 
Mat canny; 

cvtColor(image, imagegray,CV_BGR2GRAY); 

vector<vector<Point>>contours; 
vector<Vec4i>hierarchy; 

Canny(imagegray,canny,50,150); 

findContours(canny,contours,hierarchy,CV_RETR_TREE,CV_CHAIN_APPROX_SIMPLE,cvPoint(0,0)); 



    Mat drawing=Mat::zeros(imagegray.size(),CV_8UC3); 
vector<Point>contours_approx; 
    approxPolyDP(contours[0],contours_approx,100,true) 
//approxPolyDP(contours,imageresult,100,true); 

drawContours(image,contours,-1,Scalar(255,0,0)); 

namedWindow("Display"); 
imshow("Display",image); 
waitKey(0); 
return(0); 

findcontour 작동 입력하는 영리한/임계 치 화상을 필요로한다.

approxPolyDP()는 곡선을 다른 곡선 (점의 벡터)으로 근사합니다.

+0

감사합니다. 또한 approxPolyDP()를 사용하여 이미지의면 수를 계산할 수 있습니까? 그렇다면 어떻게? –

+0

또한 질문을 확인하고 답을 알아낼 수 있는지 확인하십시오. http://stackoverflow.com/questions/21130735/matchshapes-function-not-working –