2011-11-30 5 views
0

하나의 단일 채널 이미지를 dft로 만들려고합니다. cvDft가 복잡한 값을 기대하기 때문에 원본 이미지를 0으로 모두 병합하는 것이 좋습니다. 허수 부로 간주 될 수있다.cvMerge로 변환 할 수 없습니다. DFT

누구든지 나를 도울 수 cvArr에 cvMAt을 변환 할 수 없습니다 : cvmerge 기능을 사용할 때

내 문제는

Mat tmp = imread(filename,0); 

if(tmp.empty()) 
    {cout << "Usage: dft <image_name>" << endl; 
    return -1;} 
Mat Result(tmp.rows,tmp.cols,CV_64F,2); 
Mat tmp1(tmp.rows,tmp.cols,CV_64F, 0); 
Mat image(tmp.rows,tmp.cols,CV_64F,2); 
cvMerge(tmp,tmp1,image);` 

그것은 나에게 다음 오류를 제공 온다? 감사!

답변

1

1) OpenCV의 코드 cv::Mat (2 개 가지 스타일까지 혼합있는 것처럼 보인다 - 매트) OpenCV의 새 버전에서 C++ 클래스, cvMerge는 OpenCV의 이전 버전에서 C 함수이다.

대신 CV_64F 사용 convertTocvmerge 사용

2 merge) 당신은 아마 유형 CV_8U (매트릭스 (tmp)을 병합하려는)를 사용하는 CV_64F

3)로 TMP를 얻을 수 있습니다 왜 Result & image 매트 (대상 매트)가 cv::Scalar(2)으로 초기화됩니까? 난 당신이 constractor 매개 변수를 오용하는 것 같아요. 자세한 내용은 here을 참조하십시오.

4) image 매트있어 단일 채널 매트 그리고 당신은 (질문에서 언급 한 바와 같이), i '를,

Mat image(tmp.rows,tmp.cols,CV_64FC2); 
+0

좋아, 많은 감사에 대한 선언을 변경하려면 2 채널 매트로 원 시도하려고 해요, 계속 당신을 업데이트합니다. 다시 한 번 감사드립니다. –

+0

반갑습니다. 해답이 귀하의 문제를 해결 한 경우 답 투표 점수 아래에있는 V 기호를 클릭하여 해답을 수락하십시오. – Boaz