- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图找出为什么在OpenCV中对图像应用仿射变换时,其结果在预览窗口中不可见,但整个窗口都是黑色的。如何找到解决此问题的方法,以便我可以始终在窗口中查看变换后的图像(仿射变换的结果),而不管应用了变换吗?
更新:我认为发生这种情况是因为所有变换都是相对于坐标系的原点(图像的左上角)进行计算的。对于旋转,我可以指定旋转的中心,并且能够查看结果,但是在执行缩放时,我无法控制变换后的图像的位置。是否可以通过某种方式移动坐标系以使图像适合窗口?
Update2:我有一幅图像,该图像的某个位置仅包含ROI(图像的其余部分为黑色),并且需要在其上应用一组仿射变换。为了简化操作并查看每个变换的效果,我将每个变换一个接一个地应用。我注意到的是,每当我移动(平移)图像使得ROI的中心位于坐标系的中心( View 窗口的左上角)时,所有仿射变换都不会移动而正确执行。但是,通过在坐标系统的中心平移ROI的中心,可以将ROI的上部和左侧保留在当前 View 窗口之外。
如果将ROI的中心点移到 View 窗口中的另一个点(例如窗口中心),则仿射变换类型为:
A = [a 0 0; 0 b 0](A是2x3矩阵,warpAffine函数的参数)
将图像(ROI)移动到 View 窗口之外(如果ROI的中心在左上角,则不会发生)。如何修改仿射变换,以使图像不会移出其位置(行为方式与ROI中心位于坐标系中心一样)?
最佳答案
如果您希望能够应用任何仿射变换,则将无法始终查看它。更好的主意是将变换手动应用于正方形的4个角,然后查看这4个点最终的坐标。这样可以告诉您图像的去向。
如果您有多个转换,只需将它们合并为一个转换即可。如果您有3个转换
[A],[B],[C]
[C]*[B]*[A]
[0,0,1]
final_transform = [A].inv()*[B]*[A]
关于opencv - 查看仿射变换的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13049800/
我是一名优秀的程序员,十分优秀!