【发布时间】:2014-05-12 05:42:55
【问题描述】:
好吧,很抱歉再次问了几乎相同的问题,但我尝试了很多方法,但我仍然无法做我想做的事情,我什至不确定单独使用 opencv 是否可行。 我旋转了一个图像,我想将它复制到另一个图像中。问题是,无论我以何种方式裁剪这个旋转的图像,它总是在第二个图像内复制,并在其周围没有旋转的正方形。如下图所示。(忘记白色部分没关系)。我只想删除条纹部分。 我相信我的问题在于我将图像复制到的 ROI,因为该 ROI 是矩形而不是 RotatedRect。如下代码所示。
cv::Rect roi(Pt1.x, Pt1.y, ImageAd.cols, ImageAd.rows);
ImageAd.copyTo(ImageABC(roi));
但我不能像下面的代码中那样使用 rotateRect 复制到...
cv::RotatedRect roi(cent, sizeroi, angled);
ImageAd.copyTo(ImageABC(roi));
那么有没有办法在opencv中做我想做的事? 谢谢!
在使用下面的方法和蒙版后,我得到了这个图像,如图所示,它被 roi 截断,我用它来表示我想在图像中的哪个位置复制我的旋转图像。基本上现在我已经屏蔽了图像,我如何选择将这个蒙面图像放入我的第二张图像的位置。目前我使用一个矩形,但这不起作用,因为我的图像不再是一个矩形而是一个旋转的矩形。查看代码以了解我目前是如何错误地执行此操作的(它会中断,如果我使 rect 变大,则会引发异常)。
cv::Rect roi(Pt1.x, Pt1.y, creditcardimg.cols, creditcardimg.rows);
creditcardimg.copyTo(imagetocopyto(roi),mask);
【问题讨论】:
-
您要从旋转的矩形复制还是复制到旋转的矩形?使用蒙版的思路是: 1. source 是旋转后的图像。 2. 旋转矩形在该旋转图像内构建 roi。 3. 创建一个看起来像旋转矩形的蒙版。 4. 仅使用该掩码进行复制。 5. 结果是只有旋转矩形中的像素在黑色背景下可见的图像。
-
两者兼而有之,因为在计算出我要复制的图像的掩码后,我还想将此图像(仅掩码位)放入另一个图像中。现在的问题是如何在 copyTo 中指定要放置此旋转和蒙版图像的位置的坐标。如果我使用 rect roi,它将被放置在另一个没有真正帮助的非旋转矩形内。
-
this solution 你之前的问题有什么问题?
-
我的目标角被检测到并且没有形成一个完美的矩形。所以我不会有相应的角插入到getPerspectiveTransform中。
-
@Fionn 我仍然不知道您是要在复制时旋转矩形还是要按原样复制,但只有 roi(这是一个旋转的矩形)