我是 Open Cv 的新手,我想转换两个图像,这是我的图像,左图和右图。
这是我的代码
cv::Mat transformMat = cv::estimateRigidTransform(leftImageMat, rightImageMat, true);
transform(leftImageMat, reconMat, transformMat);
但问题是 reconMat 是 2 通道的。那么如何在 openCv 中显示它或转换为 1 通道图像,如右图和左图所示。
我是 Open Cv 的新手,我想转换两个图像,这是我的图像,左图和右图。
这是我的代码
cv::Mat transformMat = cv::estimateRigidTransform(leftImageMat, rightImageMat, true);
transform(leftImageMat, reconMat, transformMat);
但问题是 reconMat 是 2 通道的。那么如何在 openCv 中显示它或转换为 1 通道图像,如右图和左图所示。
你对做什么有一个根本的误解cv::transform()
。该文档
指出:
执行每个数组元素的矩阵变换。
这意味着每个元素的数值由指定的矩阵变换。
看起来你想要一个几何变换。这可以通过以下方式实现cv::warpAffine()
:
cv::Mat transformMat = cv::estimateRigidTransform(leftImageMat, rightImageMat, true);
cv::Mat output;
cv::Size dsize = leftImageMat.size(); //This specifies the output image size--change as needed
cv::warpAffine(leftImageMat, output, transformMat, dsize);