我试图找出原因,当我在 OpenCV 中的图像上应用仿射变换时,它的结果在预览窗口中不可见,但整个窗口都是黑色的。我怎样才能找到解决这个问题的方法,以便我无论应用了何种变换,都可以在窗口中查看我的变换图像(仿射变换的结果)吗?
更新:我认为发生这种情况是因为所有转换都是相对于坐标系的原点(图像的左上角)计算的。虽然对于旋转,我可以指定旋转的中心,并且我可以查看结果,但当我执行缩放时,我无法控制转换后的图像的去向。是否可以以某种方式移动坐标系以使图像适合窗口?
Update2:我有一个图像,其中某个位置仅包含 ROI(图像的其余部分为黑色),我需要对其应用一组仿射变换。为了让事情变得更简单并查看每个单独变换的效果,我一个一个地应用了每个变换。我注意到的是,每当我移动(平移)图像以使 ROI 的中心位于坐标系的中心(视图窗口的左上角)时,所有仿射变换都会在不移动的情况下正确执行。但是,通过在坐标系的中心平移 ROI 的中心,ROI 的上半部分和左半部分仍然被切出当前视图窗口。如果我将 ROI 的中心点移动到视图窗口中的另一个点(例如窗口中心),则会出现以下类型的仿射变换: A=[a 0 0; 0 b 0] (A 是 2x3 矩阵,warpAffine 函数的参数)将图像 (ROI) 移动到视图窗口之外(如果 ROI 的中心位于左上角,则不会发生这种情况)。如何修改仿射变换以使图像不会移出其位置(与 ROI 中心位于坐标系中心时的行为相同)?