2014-09-11 5 views
0

OpenCV Mat :: Mat 생성자를 데이터 전달 옵션과 함께 사용하려고합니다.OpenCV Construct Matte from float * array

배열에 대한 플로트 포인터를 전달할 수있는 포럼을 읽었지 만, 그럴 때마다 실제 값보다는 주소에서 전달하려고 시도합니다. 배열

난 플로트 어레이를 만드는 두개의 다른 방법을 시도했다 :

float *outputimg = (float*)malloc(img1.rows*img1.cols*sizeof(float)); 

float *outputimg = (float*)malloc(img1.step*img1.elemSize()); 

다음과 같이 I는 매트 생성자 시도 :의

Mat contrastimg(img1.rows, img1.cols, CV_32F, outputimg, img1.step); 

Mat contrastimg(img1.rows, img1.cols, CV_32F, outputimg); 

Mat contrastimg(img1.rows, img1.cols, CV_32F, outputimg, img1.cols*sizeof(float)); 

없음 이것들은 나를 위해 일하고있다. 어떤 아이디어?

+0

두 번째 시도가 첫 번째 부동 배열과 작동해야합니다 ... 어떻게 작동하는지 테스트 했습니까? – Micka

+0

매트 대조 (img1.rows, img1.cols, CV_32F, floatptr); 유효한 것입니다. – berak

답변

-1

나는 당신이 필요로 할 수있는 가장 좋은 방법은 첫째 convert 포인터 그것에서 Mat 객체 construct 다음 매트릭스 CvMat와이다, 생각합니다. 다음과 같이 보일 것입니다 :

CvMat* m = new CvMat; 
m->type = yourType; 
m->data.fl = outputimg; 
m->rows = img1.rows; 
m->cols = img1.cols; 

Mat matrix(m); 
+0

약간의 향상은'new'를 사용하지 않고 간단히'CvMat m; '을 생성하는 것입니다. 그런 다음 누출 될 염려가 없으며'Mat' :'Mat Matrix (&m);')를 만들 수 있습니다. – Aurelius