Sagen, ich habe:Casting Matrix zwischen cv :: Mat zu Eigen :: Matrix und
Eigen::Matrix<int, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor> someMatrixEigen = someMatrix();
, wenn ich einen Lebenslauf :: Mat-Header (mit Typ CV_8U) zu schaffen war, sollte ich in der Lage sein, um das zu tun, oder?
cv::Mat someMatrixOCV(someMatrixEigen.rows(), someMatrixEigen.cols(), CV_8U, someMatrixEigen.data());
Dann, wenn ich cv::Mat anotherMatrixOCV
, müssen Eigen zurück zu gehen, sollte dies auch funktionieren?
Eigen::Map<Eigen::Matrix<int, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor> > anotherMatrixEigen(anotherMatrixOCV.ptr<int>(), anotherMatrixOCV.rows, anotherMatrixOCV.cols);
Sind die Integer-Typen hier kompatibel? Ich scheine das in der Lage zu bekommen, wenn ich float und CV_32F benutze, aber die Integer-Version scheint nicht zu funktionieren (segfault).
CV_8U ist kein Typ, sondern definiert '#define CV_8U 0'. ('opencv2/core/cvdef.h'). Für die Vorlage benötigen Sie einen tatsächlichen Typ, der in diesem Fall "unsigned char" ist. – user1906
@ user1906 Danke. Ich habe deine Bearbeitung eingefügt. –