2016-10-06 3 views
1

내가 가진 말 :주조 아이겐 :: 매트릭스에 이력서 :: 매트 사이의 매트릭스 및

Eigen::Matrix<int, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor> someMatrixEigen = someMatrix();

나는 이력서 : (유형 CV_8U와) 매트 헤더를 만들 수 있다면, 내가 할 수 있어야한다 이거 할거야, 그렇지? 내가 cv::Mat anotherMatrixOCV이있는 경우

cv::Mat someMatrixOCV(someMatrixEigen.rows(), someMatrixEigen.cols(), CV_8U, someMatrixEigen.data());

다음, 다시 아이겐로 이동이 너무 일을해야합니까?

Eigen::Map<Eigen::Matrix<int, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor> > anotherMatrixEigen(anotherMatrixOCV.ptr<int>(), anotherMatrixOCV.rows, anotherMatrixOCV.cols);

여기에 정수 타입 어울리는 사람인가요? 나는 이것을 float과 CV_32F를 사용할 때 사용할 수있는 것처럼 보이지만 정수 버전은 작동하지 않는 것 같습니다 (segfault). 하여 행렬 서명 int 형 (얼마나 많은 비트 컴파일러에 의존하지만, 8 개 이상)의 반면

답변

0

CV_8U는 부호없는 타입 (구체적으로, 예를 들어 unsigned char 8 비트)로 나타나는 것이다. 전환에 CV_32S 또는 Eigen::Matrix<unsigned char, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor>을 사용해보세요.

+0

CV_8U는 유형이 아니지만'#define CV_8U 0'을 정의합니다. ('opencv2/core/cvdef.h'). 템플릿의 경우 실제 타입이 필요합니다.이 경우는'unsigned char'입니다. – user1906

+0

@ user1906 감사합니다. 편집을 통합했습니다. –